文件路径连接



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

我有一个可怕的时间,主要是由于Windows使用反斜杠字符来分隔文件路径。我读到过"路径库"模块应该能够把这些乱七八糟的东西整理出来,但是在构建文件路径时,它显然不支持串联。

UNC路径作为字典从另一个应用程序(PRTG Network Monitor:

)传递给脚本。
{"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}}

有人能解释一下我如何建立一个路径,以便计算文件名,它应该看起来像这样:

\server02logslog01.rhmgmt.lanlog01.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)  # -> \server02logslog01.rhmgmt.lanlog01.rhmgmt.lan-2021-07-29.log

相关内容

  • 没有找到相关文章

最新更新