微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

文件路径串联

如何解决文件路径串联

我需要根据作为参数传递给我的脚本的 UNC 路径、API 调用计算日期的组合来构建 Windows(仅限)文件路径。

我过得很糟糕,主要是由于 Windows 使用反斜杠字符来分隔文件路径。我读过“pathlib”模块应该能够解决这个问题,但它显然在构建文件路径时不支持连接。

UNC 路径作为字典从另一个应用程序传递给脚本(PRTG 网络监视器:

{"fileshare": "//server02/logs/"}

我阅读了该内容,然后需要附加一个源自 API 调用的主机名:

logPath = Path(params["fileshare"] + "/" + apiHostname + "/")

然后我计算需要附加到日志路径的日期,以及分隔符“-”和文件名后缀:

filePath = Path(logPath,+ apiHostname + "-",+ past_day + ".log" )

拼接时出现问题:

{"text": "Python Script execution error: unsupported operand type(s) for +: 'WindowsPath' and 'str'","error": 1}}

有人可以解释我如何构建路径,以便计算出的文件名应该如下所示:

\\server02\logs\log01.rhmgmt.lan\log01.rhmgmt.lan-2021-07-28.log

可以打开加工吗?

解决方法

是的“pathlib”模块应该能够解决这个问题

输入:

from datetime import date,timedelta
from pathlib import Path

params = {"fileshare": "//server02/logs/"}
apiHostname = 'log01.rhmgmt.lan'
past_day = str((date.today() - timedelta(days=1)))

创建初始路径并附加所有部分:

fileshare = Path(params['fileshare'])
filepath = fileshare / apiHostname / f"{apiHostname}-{past_day}.log"

输出:

>>> filepath
PosixPath('//server02/logs/log01.rhmgmt.lan/log01.rhmgmt.lan-2021-07-28.log')
,

是的,pathlib 可以轻松解决问题。 您可以使用 joinpath() 方法,正如我在评论中建议的那样,在您构建 Path 时连接组件。它的作用等同于 os.path.join() 的作用。

唯一有点棘手的部分是您必须首先创建一个空的 Path 才能使用它们从 PurePath 继承的方法。

from datetime import date,timedelta
from pathlib import Path

params = {"fileshare": "//server02/logs/"}
apiHostname = 'log01.rhmgmt.lan'
past_day = str((date.today() - timedelta(days=1)))

filePath = Path().joinpath(params["fileshare"],apiHostname,apiHostname + '-' + past_day + '.log')
print(filePath)  # -> \\server02\logs\log01.rhmgmt.lan\log01.rhmgmt.lan-2021-07-29.log

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。