如何在Python中删除错误的路径字符?

发布于 2021-01-29 18:09:39

在Python中删除错误路径字符(例如Windows上的“ \”或“:”)的最跨平台方法是什么?

因为似乎没有理想的解决方案,所以我决定采用相对严格的限制,并使用了以下代码:

def remove(value, deletechars):
    for c in deletechars:
        value = value.replace(c,'')
    return value;

print remove(filename, '\/:*?"<>|')
关注者
0
被浏览
46
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    不幸的是,可接受的字符集因操作系统 文件系统而异。

    * 当前代码页中的几乎所有字符都用作名称,包括Unicode字符和扩展字符集(128–255)中的字符,但以下各项除外:
      * 不允许使用以下保留字符:
    

    <>:“ / / |?*
    * 不允许使用整数表示形式(介于0到31之间)的字符。
    * 目标文件系统不允许的任何其他字符。

    接受的字符列表可能会有所不同,具体取决于首先格式化文件系统的计算机的操作系统和语言环境。

    .NET具有GetInvalidFileNameCharsGetInvalidPathChars,但是我不知道如何从Python调用它们。

    • Mac OS:始终排除NUL,POSIX层排除“ /”,Apple API排除“:”
      • HFS +:Unicode 2.0规范中UTF-16可以表示的任何非排除字符序列
      • HFS:可以用MacRoman(默认)或其他编码表示的任何非排除字符序列,具体取决于创建文件系统的机器
      • UFS:与HFS +相同
    • Linux:
      • 本机(类似UNIX的)文件系统:任何字节序列(不包括NUL和“ /”)
      • FAT,NTFS,其他非本机文件系统:不同

    最好的选择可能是在所有平台上都过于保守,或者只是尝试创建文件名并处理错误。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看