如何写入文件名中包含空格和特殊字符的文件?
How do I write to a file with spaces and special characters in file name?
我正在尝试写入一个名为
的文件
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
当我删除 space 时出现同样的错误,它似乎仍然在 :
处剪辑。如何在文件名中包含此类字符?
你不能。冒号只允许在卷分隔符上使用 - 其他任何地方都是非法的。
允许:
d:/somedir/somefile.txt
非法:
./some:dir/somefile.txt
作为分隔符,您可以使用 '\'
或 '/'
- 两者都应该被理解。
这不是 python 限制,而是操作系统限制。
参见 f.e。 What characters are forbidden in Windows and Linux directory names?
Windows API 不允许在文件名中使用冒号,它是为盘符保留的,使用不同的符号。
我正在尝试写入一个名为
的文件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
当我删除 space 时出现同样的错误,它似乎仍然在 :
处剪辑。如何在文件名中包含此类字符?
你不能。冒号只允许在卷分隔符上使用 - 其他任何地方都是非法的。
允许:
d:/somedir/somefile.txt
非法:
./some:dir/somefile.txt
作为分隔符,您可以使用 '\'
或 '/'
- 两者都应该被理解。
这不是 python 限制,而是操作系统限制。
参见 f.e。 What characters are forbidden in Windows and Linux directory names?
Windows API 不允许在文件名中使用冒号,它是为盘符保留的,使用不同的符号。