Python 为什么os.path.join不能处理字符串格式

Python 为什么os.path.join不能处理字符串格式,python,Python,我想使用os.path.join收集我的文件路径。 但是有一些麻烦。 请帮帮我 print(sys.argv[1])#print hw2 path=os.path.join(sys.argv[1],“{:s}.txt”) print(path)#print{:s}.txt 为什么结果不是hw2/{:s}.txt? 我已经问过其他人了,这对他们来说是可行的。 我的python版本是3.6.8。在Windows上,os.path.join似乎对它认为的驱动器号不是很挑剔。初始的{:导致第二个参数被

我想使用os.path.join收集我的文件路径。 但是有一些麻烦。 请帮帮我

print(sys.argv[1])#print hw2
path=os.path.join(sys.argv[1],“{:s}.txt”)
print(path)#print{:s}.txt
为什么结果不是hw2/{:s}.txt? 我已经问过其他人了,这对他们来说是可行的。
我的python版本是3.6.8。

在Windows上,
os.path.join
似乎对它认为的驱动器号不是很挑剔。初始的
{:
导致第二个参数被视为驱动器{上的绝对路径,导致忽略第一个参数

作为一种解决方法,请提供一个显式字段号,将冒号与字符串的第一个字符分隔开来:

path = os.path.join(sys.argv[1], '{0:s}.txt')

(在我看来,这值得在bugs.python.org上做一个bug报告。)

无法复制;我也得到了
hw2/{:s}.txt
。@BlubberDBlub不是f-string.OP似乎不想在这一点上插值。有趣。当我运行代码并将“hw2”作为命令行参数传递时,输出是
{:s}.txt
。我想知道这是否依赖于操作系统?我使用的是Windows 10。@BlubberdBlub操作系统此时似乎不需要任何格式;目标似乎是使用
OS.path.join
创建一个格式字符串,以便稍后与
格式一起使用。在Windows上,这可能在某种程度上被解释为驱动器号或其他格式他有一个特殊的意义。