如何检查python平台不兼容的文件夹(文件)名称

我想能够从python检查,如果一个给定的string可能是一个有效的跨平台文件夹名称 – 下面是我遇到的具体问题(文件夹名称结尾英寸),但我敢肯定还有一些特殊情况(如:con等)。

有这样的图书馆吗?


从python(3.2)我在Windows(7)上创build了一个名字以点('。')结尾的文件夹,例如(没有方括号):[我在假期做了什么,第二部分]

当创build的文件夹是ftp'd(对于Linux,但我想这是无关紧要的),它没有了点(而且,作为回报,这打破了很多超链接)。

我已经从命令行检查了它,似乎该文件夹没有“。” 在文件名中

mkdir tmp. dir cd tmp cd ..\tmp. 

显然,在文件夹名称末尾添加一个点将被忽略,例如:

 cd c:\Users. 

按预期工作。

没有可悲的没有办法做到这一点。 对于Windows,您基本上可以使用下面的代码来删除所有非法字符 – 但是如果有人仍然有一个FAT文件系统,您也必须处理这些文件,因为这些文件更严格。 基本上你必须阅读所有文件系统的文档,并拿出一个完整的列表。 以下是NTFS的一个起点:

 ILLEGAL_NTFS_CHARS = "[<>:/\\|?*\"]|[\0-\31]" def __removeIllegalChars(name): # removes characters that are invalid for NTFS return re.sub(ILLEGAL_NTFS_CHARS, "", name) 

然后你需要一些“禁止”的名单,以摆脱COM。 几乎是一个完整的混乱,这是忽略的Linux(虽然那里是非常轻松afaik)

不要使用空格或句点来结束文件或目录名称。 尽管底层文件系统可能支持这种名称,但Windows外壳程序和用户界面不支持。

http://msdn.microsoft.com/en-us/library/aa365247.aspx#naming_conventions

那个页面也会给你关于其他非法名称的信息,对于那个Windows来说。 包括CON,如你所说的你自己。

如果你尊重这些(看似苛刻的)规则,我认为你将在Linux和大多数其他系统上安全。