【发布时间】:2021-10-05 11:48:25
【问题描述】:
我需要结合作为参数传递给我的脚本的 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
可以打开处理吗?
【问题讨论】:
-
Path(params["fileshare"] + "/" + apiHostname + "/")看起来不对。您通常使用逗号分隔的参数调用这些函数,它会为您进行连接。通常我使用os.path.join(foo, bar, baz)。logPath, + apiHostname只是一个错字——在参数列表的中间有一个悬挂的+——删除它。 -
你不能使用
joinpath()方法来连接它们吗? -
如果您使用的是
pathlib.Path,那么您应该使用它的功能——/运算符——来连接路径,而不是字符串连接。另请注意,在正常情况下,正斜杠在 Windows 路径中工作得很好;cmd.exe接受它们(它们只是弄乱了制表符完成等)并且 Python 程序接受它们。 C++ programs accept them, too, 好像是在windows端实现的。
标签: python windows path concatenation pathlib