路径库和字符串连接的控制顺序
Control order of pathlib and string concatenation
我有一个要保存文件的目录,保存为一个名为 dir
的 Path
对象。我想使用字符串连接在该路径自动生成文件名。
我能让它在一行中工作的唯一方法就是通过字符串连接:
dir = Path('./Files')
constantString = 'FileName'
changingString = '_001'
path2newfile = dir.as_posix() + '/' + constantString + changingString
print(path2newfile) # ./Files/Filename_001
...过于冗长且与平台无关。
我想要做的是使用 pathlib 的 /
运算符来轻松操作同样与平台无关的新文件路径。这将需要确保字符串连接首先发生,但我知道如何做到这一点的唯一方法是设置一个(无意义的)变量:
filename = constantString + changingString
path2newfile = dir / filename
但老实说,我不明白为什么这必须要分两行。
如果我假设使用“实际”字符串(即不包含字符串的变量),我可以这样做:
path2newfile = dir / 'Filename' '_001'
但这不适用于变量。
path2newfile = dir / constantString changingString
# SyntaxError: invalid syntax
所以我认为基本问题是 如何控制 python 中运算符的顺序? 或者至少使连接运算符 +
起作用在路径运算符 /
.
之前
请记住这是一个 MWE。我的实际问题有点复杂,在代码中要重复几次。
使用os.path.join()。
两者都是 platform-independent,您可以将所需的路径部分作为参数插入。
只需在字符串连接周围使用括号:
path2newfile = dir / (constantString + changingString)
您是否考虑过使用 Python f-strings?
您的 real-world 示例似乎有一种“template-y”的感觉,因此类似于:
path / f"constant part {variable_part}"
可能有用。
我有一个要保存文件的目录,保存为一个名为 dir
的 Path
对象。我想使用字符串连接在该路径自动生成文件名。
我能让它在一行中工作的唯一方法就是通过字符串连接:
dir = Path('./Files')
constantString = 'FileName'
changingString = '_001'
path2newfile = dir.as_posix() + '/' + constantString + changingString
print(path2newfile) # ./Files/Filename_001
...过于冗长且与平台无关。
我想要做的是使用 pathlib 的 /
运算符来轻松操作同样与平台无关的新文件路径。这将需要确保字符串连接首先发生,但我知道如何做到这一点的唯一方法是设置一个(无意义的)变量:
filename = constantString + changingString
path2newfile = dir / filename
但老实说,我不明白为什么这必须要分两行。
如果我假设使用“实际”字符串(即不包含字符串的变量),我可以这样做:
path2newfile = dir / 'Filename' '_001'
但这不适用于变量。
path2newfile = dir / constantString changingString
# SyntaxError: invalid syntax
所以我认为基本问题是 如何控制 python 中运算符的顺序? 或者至少使连接运算符 +
起作用在路径运算符 /
.
请记住这是一个 MWE。我的实际问题有点复杂,在代码中要重复几次。
使用os.path.join()。
两者都是 platform-independent,您可以将所需的路径部分作为参数插入。
只需在字符串连接周围使用括号:
path2newfile = dir / (constantString + changingString)
您是否考虑过使用 Python f-strings?
您的 real-world 示例似乎有一种“template-y”的感觉,因此类似于:
path / f"constant part {variable_part}"
可能有用。