如何写入文件名中带有空格和特殊字符的文件?

问题描述

我正在尝试写入一个名为

文件
data/STO: INVE-B-TIME_SERIES_DAILY_ADJUSTED-1.csv

在Windows上使用以下python代码

overwrite = "w"  # or write new

f = open(OutputPath(copyNr),overwrite)
f.write(response.content.decode('utf-8'))
f.close()

print(f"Wrote to file: {OutputPath(copyNr)}")

控制台中的输出是正确的,但是写入的文件仅产生data/STO,因此路径似乎已被剪切。我尝试使用此SO answer中的方法对字符进行转义,但这给我以下文件名的invalid_argument异常:

data/STO\\:\\ INVE-B-TIME_SERIES_DAILY_ADJUSTED-1.csv

当我删除空格时,我仍然遇到相同的错误,但它似乎仍会夹在:处。如何在文件名中包含此类字符?

解决方法

不能。只能在volumeseparator上使用冒号-在任何非法的地方。

允许:

d:/somedir/somefile.txt

非法:

./some:dir/somefile.txt

作为分隔符,您可以使用'\\''/'-应该都理解。

这不是python限制,而是操作系统限制。

请参见What characters are forbidden in Windows and Linux directory names?

,

Windows API不允许在文件名中使用冒号,它保留用于驱动器号,请使用其他符号。