用于确保文件名始终有效-现在在Python3中也是如此
goldfinch的Python项目详细描述
关于
goldfinch是一个简单的包,它从文件名中删除无效的文件名字符。传入字符串或Unicode(包含或不包含无效字符)并获取返回的有效文件名(作为Unicode)。
通常,goldfinch会删除无效的文件名字符,如<;gt;:“/?”*以及0-255字符集以上的字符。默认设置是尝试使用“unicodedata”转换为ascii字符。
安装
pip安装goldfinch 或 易于安装-u goldfinch
为什么使用金翅雀
这个包唯一的真正用途是动态创建文件名,并且无法知道作为文件名传递的确切内容。我发现当我刮网站的时候它特别有用。
- 所以,不要这样:
>>> fileName = 'this is a filename with some invalid characters in it <>:"/\|?*' >>> file = open(fileName,"w") Traceback (most recent call last): File "<stdin>", line 1, in <module> IOError: [Errno 2] No such file or directory: 'this is a filename with some invalid characters in it <>:"/\\|?*'
- 执行此操作:
>>> from goldfinch import validFileName as vfn >>> fileName = 'this is a filename with some invalid characters in it <>:"/\|?*' >>> file = open(vfn(fileName),"w")
示例
规范化文件名时,有三个(空格、initcap和ascii)选项可用。
默认值为“space=”下划线“,initcap=true,ascii=true”。
- 对于空格,选项是下划线、删除和保留。默认值是下划线,它将用下划线(\u)替换空格。
- initcap是一个true&false选项。如果为true,则默认情况下会将单词中的第一个字符转换为大写,并保留所有其他字符为小写。
- ascii也是一个true&false选项。同样正确的是默认值,它将把这个____转换成这个aaaao。False将保持字符原样。
- 使用默认设置:
>>> fileName = 'THIS IS a filename with ÅåÄäÖ some characters that will not work like these: <>:"/\|?*' >>> vfn(fileName) 'This_Is_A_Filename_With_Aaaao_Some_Characters_That_Will_Not_Work_Like_These'
- 默认使用Unicode输入:
>>> fileName = u'THIS IS a filename with ÅåÄäÖ some characters that will not work like these: <>:"/\|?*' >>> vfn(fileName) 'This_Is_A_Filename_With_Aaaao_Some_Characters_That_Will_Not_Work_Like_These'
- 如果initcap=false:
>>> vfn(fileName, initCap = False) 'THIS_IS_a_filename_with_AaAaO_some_characters_that_will_not_work_like_these_'
- 带空格='remove':
>>> vfn(fileName, space = 'remove') 'ThisIsAFilenameWithAaaaoSomeCharactersThatWillNotWorkLikeThese'