我希望能够从python检查一个给定的字符串是否是一个有效的跨平台文件夹名称 - 下面是我遇到的具体问题(文件夹名称以。结尾),但我确定有一些更特殊的情况(例如:con等)。
这是否有图书馆?
从python(3.2)我在Windows(7)上创建了一个名称以dot('。')结尾的文件夹,例如(没有方括号):[我在假期做了什么,第二部分。]
当创建的文件夹是ftp'd(对linux,但我猜这是无关紧要的)时,它不再有点了(反过来,这打破了很多超链接)。
我已从命令行检查过,似乎该文件夹没有'。'在文件名中
mkdir tmp.
dir
cd tmp
cd ..\tmp.
显然,忽略在文件夹名称末尾添加一个点,例如:
cd c:\Users.
按预期工作。
答案 0 :(得分:2)
不要使用空格或句点结束文件或目录名称。虽然 底层文件系统可能支持这样的名称,即Windows shell 和用户界面没有。
http://msdn.microsoft.com/en-us/library/aa365247.aspx#naming_conventions
对于Windows,该页面也会为您提供有关其他非法名称的信息。包括你在说自己的CON。
如果您尊重那些(看似苛刻的)规则,我认为您在Linux和大多数其他系统上都是安全的。
答案 1 :(得分:2)
不幸的是,没有办法做到这一点。对于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(虽然它非常放松了)