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同时兼容python2和python3的8个技巧分享
Jul 11 Python
python函数形参用法实例分析
Aug 04 Python
Python对list列表结构中的值进行去重的方法总结
May 07 Python
Python 获取当前所在目录的方法详解
Aug 02 Python
python使用logging模块发送邮件代码示例
Jan 18 Python
用python处理图片之打开\显示\保存图像的方法
May 04 Python
Python Celery多队列配置代码实例
Nov 22 Python
Pyinstaller 打包发布经验总结
Jun 02 Python
Python图像处理二值化方法实例汇总
Jul 24 Python
详解python tkinter 图片插入问题
Sep 03 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
Nov 10 Python
pandas中对文本类型数据的处理小结
Nov 01 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调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
大家未必知道的Js技巧收藏
2008/04/07 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
使用puppeteer破解极验的滑动验证码
2018/02/24 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
Python实现获取网站PR及百度权重
2015/01/21 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
使用tensorflow实现AlexNet
2017/11/20 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
HTML5 textarea高度自适应的两种方案
2020/04/08 HTML / CSS
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
让生命充满爱演讲稿
2014/05/10 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
县委务虚会发言材料
2014/10/20 职场文书
小学元宵节活动总结
2015/02/06 职场文书
年会主持人开场白台词
2015/05/29 职场文书
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android