2017-08-31 28 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個字符)