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 文件操作技巧(File operation) 实例代码分析
Aug 11 Python
Python写入数据到MP3文件中的方法
Jul 10 Python
Python 迭代器与生成器实例详解
May 18 Python
Python对象类型及其运算方法(详解)
Jul 05 Python
Django中ORM表的创建和增删改查方法示例
Nov 15 Python
python 编码规范整理
May 05 Python
解决Python2.7中IDLE启动没有反应的问题
Nov 30 Python
Python 常用模块 re 使用方法详解
Jun 06 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
python numpy 反转 reverse示例
Dec 04 Python
python Scrapy框架原理解析
Jan 04 Python
Django实现简单的分页功能
Feb 22 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
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
layui内置模块layim发送图片添加加载动画的方法
2019/09/23 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
vue+高德地图实现地图搜索及点击定位操作
2020/09/09 Javascript
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
推荐11个实用Python库
2015/01/23 Python
Python函数的周期性执行实现方法
2016/08/13 Python
基于pandas将类别属性转化为数值属性的方法
2018/07/25 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
python 多个参数不为空校验方法
2019/02/14 Python
python的sys.path模块路径添加方式
2020/03/09 Python
Python @property及getter setter原理详解
2020/03/31 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
AURALog面试题软件测试方面
2013/10/22 面试题
企划主管岗位职责
2013/12/12 职场文书
庆元旦活动总结
2014/07/09 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
党员带头倡议书
2015/04/29 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
公司借款担保书
2015/09/22 职场文书
2016高考寄语集锦
2015/12/04 职场文书