文件路径连接

2024-09-15 16:25:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要根据作为参数、API调用和计算日期传递给脚本的UNC路径的组合构建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

可以打开进行处理吗


Tags: 文件path路径logapi文件名windowserror
2条回答

是的,pathlib可以很容易地解决问题。 您可以使用^{}方法,正如我在一篇评论中所建议的那样,将正在构建Path的组件连接起来。它的作用相当于^{}的作用

唯一稍微棘手的部分是,您必须首先创建一个空的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

“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')

相关问题 更多 >