是否有办法解决Windows文件名中无效字符产生的这些转义序列?

问题描述

我试图在python 3中编写一个小脚本来清理文件名,然后再将文件上传到云解决方案。这需要在UNIX和Windows系统(包括macs)上相同地运行。 Linux和Mac允许Windows不允许在文件名和目录名中使用字符,因此,带有这些字符的文件根本无法上传,这就是为什么需要脚本的原因。

我正在使用os.walk()来扫描文件和目录,但是虽然我的第一项检查('[\\\\/":<>|*?]')的正则表达式在我的linux测试中运行没有问题,但实际上从窗口。

例如,给出一个名为hello?\This is a file文件,python将其读取为'hello\uf03f\uf05cThis is a file',而正则表达式当然不匹配。我尝试将其转换为字节,然后对其进行解码,编码和解码,并使用字节字符串作为路径,并按照各种半相关的SO文章的建议对所有内容进行解码,但是似乎没有任何东西可以给我原始字符。

除了将序列添加到正则表达式之外,还有人能建议我做些什么吗?如果找不到真正的解决方案,那将是我的最后选择吗?

我正在测试的示例(通过将驱动器安装到linux创建的无效文件):

  • C:\ Users \ username \ Desktop:
    • shortcut.lnk
    • 文本file.txt
    • | \ invalid ??。txt

    for dirpath,dirnames,filenames in os.walk("C:\\Users\\username\\Desktop"):
        for file in filenames:
            print(file)

输出


    'shortcut.lnk'
    'text file.txt'
    '\uf07c\uf05cinvalid\uf03f\uf03f.txt'

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)