问题描述
我试图在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 (将#修改为@)