我希望能够从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和大多数其他系统上也是安全的。