如何移除不安全字符以保存文件
我想保存一个文件,文件名要尽量保留有效字符,比如说,如果我得到的文件名是:
>This\ Ăwesomé_Song?©.mp3
但我想在Windows 7
上保存这个文件,系统会不让我保存,直到我把>
、\
和?
这些字符去掉。字符Ă
、©
和é
都是可以的,我希望能保留它们(而不是像简单地把所有字符都用ASCII
过滤掉那样)。
我不知道在Unix
等系统下哪些字符是允许的,但我希望这个方法能在不同平台上都能用。我打算通过实现一个字符串列表来解决这个问题,每个字符串包含一类字符,从最麻烦的字符(比如?
)到最无害的字符(比如字母a
),然后逐个去掉这些字符,直到得到一个可以保存的文件名。
编程语言是Python
,谢谢!
3 个回答
0
你可以参考这个问题中的方法,来列出所有有效的字符:
>>> import string
>>> valid_chars = "-_.() %s%s" % (string.ascii_letters, string.digits)
然后你只需要手动检查一下你的文件名就可以了。
1
在posix系统中,只有两个字符是被保留的,一个是斜杠(/
,十六进制表示是0x2F,十进制是42),另一个是空字符(\0
,十六进制表示是0x00,十进制是0)。除了这两个字符,其他任何字符都可以出现在文件名中。
8
在编程中,有时候我们会遇到一些问题,比如代码不按预期工作。这种情况可能是因为我们没有正确理解某些概念或者没有正确使用某些工具。
在这种情况下,最好的办法就是去查找相关的信息,看看其他人是怎么解决类似的问题的。StackOverflow是一个很好的地方,很多程序员会在这里分享他们的经验和解决方案。
当你在StackOverflow上提问时,记得把你的问题描述清楚,提供足够的背景信息和代码示例,这样其他人才能更好地理解你的问题并给出帮助。
如果你看到别人提问,记得仔细阅读他们的问题和提供的代码,这样你也能学到很多东西。
总之,遇到问题时不要气馁,多去请教和学习,慢慢你就会变得越来越熟练。
>>> import re
>>> print re.sub(r'[\\/:"*?<>|]+', "", "This\ Ăwesomé_Song?©.mp3")
This Ăwesomé_Song©.mp3
>>>