2014-03-13 208 views
5

在所有平臺(包括Android,iOS等移動平臺)上檢查文件名在Python中是否有效最保守的方法是什麼?檢查文件名是否有效

Ex。

this_is_valid_name.jpg - >有效

** adad.jpg - >無效

A /廣告 - >無效

+0

可能的重複[檢查路徑在Python中是否有效,而不在路徑的目標處創建文件](http://stackoverflow.com/questions/9532499/check-whether-a-path-is-valid-in -python-without-creating-a-file-at-the-ta-ta) – isedev

+0

這是關於文件路徑的。如果可以訪問或沒有。我關心跨操作系統的最一般的文件命名約定。 – gat

+0

'** adad.jpg'是一個有效的名字,例如在GNU/Linux中:'open('adad.jpg','w')'會創建它。 – bereal

回答

3

最惡劣的方式來檢查文件是否是一個有效的文件名對你的目標操作系統是檢查它與正確測試的文件名列表。

valid = myfilename in ['this_is_valid_name.jpg'] 

擴展上,你可以定義一個集,你知道被允許在文件名中每個平臺上的字符的:

valid = set(valid_char_sequence).issuperset(myfilename) 

但是,這不會是不夠的,因爲一些操作系統have reserved filenames

您需要要麼排除保留名稱create an expression(正則表達式)匹配的操作系統允許文件名域,測試您對文件名,對於每個目標平臺。

AFAIK,Python不提供這樣的幫助,因爲它是Easier to Ask Forgiveness than Permission。操作系統/文件系統有許多不同的可能組合,當操作系統發生異常時,更容易做出反應,而不是檢查所有操作系統的安全文件名域。

+1

請在你的第一個方法中使用一組:) –