用于确保文件名始终有效-现在在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'

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将变量从一个类发送到另一个类   使用Java Kubernetes客户端Api部署pod   sql如何从oracle检索图像并在java框架中显示   java更改Clover检测类的位置   java安卓位置。getAccuracy()返回1   运行时。不支持Java ME 8上的exec()。还有别的选择吗?   bdd在Java中运行Cucumber时修改CucumberOptions标记   在java中将方法更改为运行时异常   构造函数类中的Java NullPointerException   java SetResizeable(false)不会阻止双击后的帧还原   java智能卡终端移除:SCARD_E_无服务卡例外   Java正则表达式和组   爪哇骑士巡回赛   端口8443上通过ssl的java Spring安全登录在使用http协议的端口8080上无法识别   java如何确定读取文件的哪一行特定行