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



我希望能够从python检查给定的字符串是否可以是一个有效的跨平台文件夹名称-下面是我遇到的具体问题(文件夹名称以。结尾),但我确信有一些更特殊的情况(例如:con等)。

有图书馆吗?


从python(3.2)中,我在Windows(7)上创建了一个文件夹,名称以点('.')结尾,例如(没有方括号):[What I've done on my holidays, Part II.])

当创建的文件夹被ftp(到linux,但我想这是无关的),它不再有点了(作为交换,这打破了很多超链接)。

我已经从命令行检查了它,似乎文件夹没有'。文件名

mkdir tmp.
dir
cd tmp 
cd ..tmp.

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

cd c:Users.

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

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

然后你还需要一些"禁止"的名单来摆脱COM。简直是一团糟…这就忽略了Linux(尽管在Linux下可能很轻松)

文件或目录名不能以空格或句号结尾。虽然底层文件系统可能支持这样的名称,Windows shell而用户界面则没有。

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

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

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

最新更新