Python有效文件名中是变量名吗?
问题描述:
我想使用变量的名称作为文件名。有没有这种情况可能无效?Python有效文件名中是变量名吗?
例如:
my_var = "value"
with open("my_var.txt", 'wb') as fp:
pickle.dump(my_var, fp)
这里“my_var”是一个文件名的两者部分和可变的名称。
所以基本上我问,如果python允许变量名称中的任何字符,这会在文件名中造成麻烦。
答
这可用于其它操作系统有所不同,但在Windows下,所有的保留的(受禁),用于文件名字符也没有Python变量名中允许的:
- <(小于)
- >(大于)
- :(冒号)
- “(双引号)
- /(正斜杠)
- \(反斜杠)
- | (竖条或管道)
- ? (问号)
- *(星号)
不过,也有一些不同的问题:某些名字不允许作为Windows的文件名,具体是:
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9
所以,你可以”在windows下命名文件CON.txt
,尽管CON
在Python中将是一个完全有效的变量名称。
然后,文件名有一个长度限制,所以非常长的变量名可能会导致问题。
最后,Python变量名可能包含大量的Unicode字符,并非所有的字符都可用于文件名。
+0
请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85) .aspx供参考。 –
答
由于Python变量名只能包含下划线,字母和数字,因此它们都可以用作文件名。
可能出现的一个问题虽然很难想象,但您可以让Python变量的名称长于某些文件系统允许的长度。 (Windows中260个字符)
它是有效的。 string中的''my_var''是字符串,不可变。 – tilz0R
这高度依赖于操作系统和文件系统。在大多数情况下,这将是有效的,但很长的名字可能会令人不安。 –
这取决于文件系统。字符是可以的,但在python中,你可以定义一个非常长的变量名,这在Windows中会是一个问题。 –