根据操作系统的不同,在哪里可以找到文件名中允许的字符列表? (例如,在Linux中,字符:被允许出现在文件名中,但在Windows中不允许)
当前回答
更准确地说,MacOS X(现在称为MacOS) / in the Finder被解释为:在Unix文件系统中。
这样做是为了向后兼容苹果从经典Mac操作系统。
在Finder中的文件名中使用/是合法的,在终端中查看相同的文件时,它将显示一个:。
它也可以用另一种方式工作:你不能在终端的文件名中使用/,但是a:是可以的,并且会在Finder中显示为/。
有些应用程序可能会更加严格,禁止使用这两个字符,以避免混淆,或者因为它们保留了以前经典Mac OS的逻辑,或者为了平台之间的名称兼容性。
其他回答
在Windows操作系统上创建一个文件,并在文件名中给它一个像\这样的无效字符。结果,你会得到一个弹出窗口,所有的无效字符在一个文件名。
更准确地说,MacOS X(现在称为MacOS) / in the Finder被解释为:在Unix文件系统中。
这样做是为了向后兼容苹果从经典Mac操作系统。
在Finder中的文件名中使用/是合法的,在终端中查看相同的文件时,它将显示一个:。
它也可以用另一种方式工作:你不能在终端的文件名中使用/,但是a:是可以的,并且会在Finder中显示为/。
有些应用程序可能会更加严格,禁止使用这两个字符,以避免混淆,或者因为它们保留了以前经典Mac OS的逻辑,或者为了平台之间的名称兼容性。
与其试图识别所有不需要的字符, 除了可接受的字符,你可以寻找任何东西。这里有一个正则表达式,用于除posix字符以外的任何字符: Cleaned_name = re.sub(r'[^[:alnum:]。_-]', ", name)
好的,看看文件系统的比较如果你只关心主要玩家的文件系统:
窗口(FAT32, NTFS):任何Unicode NUL除外 , \, /, :, *, ?, ", <, >, |.此外,开头或结尾没有空格字符,结尾没有句号。 Mac(HFS, HFS+):除:或/之外的任何有效Unicode Linux(ext[2-4]):除了NUL和/以外的任何字节
所以任何字节除了NUL, \, /,:, *, ?, ", <, >, |,你不能有文件/文件夹调用。或. .当然,没有控制字符。
我采取了不同的方法。我不检查字符串是否只包含有效字符,而是查找无效/非法字符。
注意:我需要验证一个路径字符串,而不是一个文件名。但是如果您需要检查文件名,只需将/添加到该集合。
def check_path_validity(path: str) -> bool:
# Check for invalid characters
for char in set('\?%*:|"<>'):
if char in path:
print(f"Illegal character {char} found in path")
return False
return True
推荐文章
- 如何在TextView中添加一个子弹符号?
- 文件名中允许的字符
- Git复制文件保存历史
- 如何从Python中的文件名中替换(或剥离)扩展名?
- 在c#中从URI字符串获取文件名
- 使用JavaScript从字符串中删除除空格之外的所有特殊字符
- 在Python中构建完整的路径文件名
- 在Windows上更改文件的情况?
- 如何从PHP的完整路径中获得文件名?
- NTFS中的最大文件名长度(Windows XP和Windows Vista)?
- 什么是垂直标签?
- 使用Bash时需要转义哪些字符?
- 我如何从包含绝对文件路径的字符串中获得文件名?
- 给定文件系统路径,是否有一种更短的方法来提取没有扩展名的文件名?
- \r和\n有什么区别?