2017-08-31 60 views
-1

我想使用变量的名称作为文件名。有没有这种情况可能无效?Python有效文件名中是变量名吗?

例如:

my_var = "value" 
with open("my_var.txt", 'wb') as fp: 
    pickle.dump(my_var, fp) 

这里“my_var”是一个文件名的两者部分和可变的名称。

所以基本上我问,如果python允许变量名称中的任何字符,这会在文件名中造成麻烦。

+0

它是有效的。 string中的''my_var''是字符串,不可变。 – tilz0R

+1

这高度依赖于操作系统和文件系统。在大多数情况下,这将是有效的,但很长的名字可能会令人不安。 –

+0

这取决于文件系统。字符是可以的,但在python中,你可以定义一个非常长的变量名,这在Windows中会是一个问题。 –

回答

3

这可用于其它操作系统有所不同,但在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供参考。 –

1

由于Python变量名只能包含下划线,字母和数字,因此它们都可以用作文件名。

可能出现的一个问题虽然很难想象,但您可以让Python变量的名称长于某些文件系统允许的长度。 (Windows中260个字符)