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 数据加密代码
Dec 24 Python
讲解Python中for循环下的索引变量的作用域
Apr 15 Python
使用python存储网页上的图片实例
May 22 Python
解决Django migrate No changes detected 不能创建表的问题
May 27 Python
对Tensorflow中的变量初始化函数详解
Jul 27 Python
解决python多行注释引发缩进错误的问题
Aug 23 Python
解决python-docx打包之后找不到default.docx的问题
Feb 13 Python
python读取xml文件方法解析
Aug 04 Python
Python configparser模块应用过程解析
Aug 14 Python
详解Pycharm第三方库的安装及使用方法
Dec 29 Python
Matlab求解数组中的最大值及它所在的具体位置
Apr 16 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 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冒泡算法详解(递归实现)
2014/11/10 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
最简单的JavaScript图片轮播代码(两种方法)
2015/12/18 Javascript
JSONP原理及简单实现
2016/06/08 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
浅谈Node异步编程的机制
2017/10/18 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
Python3数字求和的实例
2019/02/19 Python
python解释器spython使用及原理解析
2019/08/24 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
python程序 创建多线程过程详解
2019/09/23 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
Python @property原理解析和用法实例
2020/02/11 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
python中关于数据类型的学习笔记
2020/07/19 Python
python如何调用php文件中的函数详解
2020/12/29 Python
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
白宫黑市官网:White House Black Market
2016/11/17 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
大学生简短的自我评价分享
2014/02/20 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
办公室文员岗位职责
2015/02/04 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python
springboot 全局异常处理和统一响应对象的处理方式
2022/06/28 Java/Android