Python 忽略文件名编码的方法


Posted in Python onAugust 01, 2020

问题

你想使用原始文件名执行文件的I/O操作,也就是说文件名并没有经过系统默认编码去解码或编码过。

解决方案

默认情况下,所有的文件名都会根据 sys.getfilesystemencoding() 返回的文本编码来编码或解码。比如:

>>> sys.getfilesystemencoding()
'utf-8'
>>>

如果因为某种原因你想忽略这种编码,可以使用一个原始字节字符串来指定一个文件名即可。比如:

>>> # Wrte a file using a unicode filename
>>> with open('jalape\xf1o.txt', 'w') as f:
...  f.write('Spicy!')
...
6
>>> # Directory listing (decoded)
>>> import os
>>> os.listdir('.')
['jalapeño.txt']

>>> # Directory listing (raw)
>>> os.listdir(b'.') # Note: byte string
[b'jalapen\xcc\x83o.txt']

>>> # Open file with raw filename
>>> with open(b'jalapen\xcc\x83o.txt') as f:
...  print(f.read())
...
Spicy!
>>>

正如你所见,在最后两个操作中,当你给文件相关函数如 open() os.listdir() 传递字节字符串时,文件名的处理方式会稍有不同。

讨论

通常来讲,你不需要担心文件名的编码和解码,普通的文件名操作应该就没问题了。 但是,有些操作系统允许用户通过偶然或恶意方式去创建名字不符合默认编码的文件。 这些文件名可能会神秘地中断那些需要处理大量文件的Python程序。

读取目录并通过原始未解码方式处理文件名可以有效的避免这样的问题, 尽管这样会带来一定的编程难度。

关于打印不可解码的文件名,请参考

以上就是Python 忽略文件名编码的方法的详细内容,更多关于Python 忽略文件名编码的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python获取apk文件URL地址实例
Nov 01 Python
Python 抓取动态网页内容方案详解
Dec 25 Python
python实现多线程暴力破解登陆路由器功能代码分享
Jan 04 Python
利用QT写一个极简单的图形化Python闹钟程序
Apr 07 Python
Python批量重命名同一文件夹下文件的方法
May 25 Python
基于python时间处理方法(详解)
Aug 14 Python
python实现祝福弹窗效果
Apr 07 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
Jan 10 Python
Python3 selenium 实现QQ群接龙自动化功能
Apr 17 Python
Python利用命名空间解析XML文档
Aug 10 Python
Python何绘制带有背景色块的折线图
Apr 23 Python
Python 如何展开嵌套的序列
Aug 01 #Python
Python 日期与时间转换的方法
Aug 01 #Python
Python 执行矩阵与线性代数运算
Aug 01 #Python
Python实现数字的格式化输出
Aug 01 #Python
Python实现一个简单的递归下降分析器
Aug 01 #Python
Python 如何在字符串中插入变量
Aug 01 #Python
Python打印不合法的文件名
Jul 31 #Python
You might like
用PHP实现文件上传二法
2006/10/09 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
基于php上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
Laravel下生成验证码的类
2017/11/15 PHP
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
JQuery循环滚动图片代码
2011/12/08 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
详解python发送各类邮件的主要方法
2016/12/22 Python
基于python 字符编码的理解
2017/09/02 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
python中类的属性和方法介绍
2018/11/27 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
物流专业大学生求职信范文
2013/10/28 职场文书
夜大毕业生自我评价分享
2013/11/10 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
2014年财政工作总结
2014/12/10 职场文书
模范班主任事迹材料
2014/12/17 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
python实现的web监控系统
2021/04/27 Python
Python selenium的这三种等待方式一定要会!
2021/06/10 Python