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程序抓取新浪在国内的所有IP的教程
May 04 Python
Python中Django发送带图片和附件的邮件
Mar 31 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
Nov 21 Python
Python字典操作详细介绍及字典内建方法分享
Jan 04 Python
python和flask中返回JSON数据的方法
Mar 26 Python
JavaScript实现一维数组转化为二维数组
Apr 17 Python
python 二维数组90度旋转的方法
Jan 28 Python
python实现AES加密和解密
Mar 27 Python
pandas 层次化索引的实现方法
Jul 06 Python
Django框架 querySet功能解析
Sep 04 Python
实例详解Python的进程,线程和协程
Mar 13 Python
PyCharm 配置SSH和SFTP连接远程服务器
May 11 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
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
JS 强制设为首页的代码
2009/01/31 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
NodeJS的Promise的用法解析
2016/05/05 NodeJs
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
2016/12/20 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
Python Queue模块详解
2014/11/30 Python
python九九乘法表的实例
2017/09/26 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
python输出国际象棋棋盘的实例分享
2020/11/26 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
法国低价在线宠物商店:bitiba.fr
2020/07/03 全球购物
通信工程专业毕业生推荐信
2013/12/25 职场文书
项目计划书范文
2014/01/09 职场文书
社区网格化管理实施方案
2014/03/21 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
爱国演讲稿500字
2014/05/04 职场文书
为自己工作观后感
2015/06/11 职场文书
同意落户证明
2015/06/19 职场文书
运动员加油词
2015/07/18 职场文书
小学三年级数学教学反思
2016/02/16 职场文书
html5调用摄像头截图功能
2022/01/18 Javascript
使用python绘制分组对比柱状图
2022/04/21 Python