2014-03-13 161 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

请在你的第一个方法中使用一组:) –