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实现随机密码字典生成器示例
Apr 09 Python
Python显示进度条的方法
Sep 20 Python
简单解决Python文件中文编码问题
Nov 22 Python
Python实时获取cmd的输出
Dec 13 Python
简单掌握Python中glob模块查找文件路径的用法
Jul 05 Python
python tensorflow学习之识别单张图片的实现的示例
Feb 09 Python
Python实现计算圆周率π的值到任意位的方法示例
May 08 Python
在django-xadmin中APScheduler的启动初始化实例
Nov 15 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 Python
Python dict和defaultdict使用实例解析
Mar 12 Python
python网络编程之五子棋游戏
May 14 Python
python中subplot大小的设置步骤
Jun 28 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+DBM的同学录程序(2)
2006/10/09 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
jQuery插件实现多级联动菜单效果
2015/12/01 Javascript
JS和canvas实现俄罗斯方块
2017/03/14 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
python之wxPython菜单使用详解
2014/09/28 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
Python3实现取图片中特定的像素替换指定的颜色示例
2019/01/24 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
PyQt5 多窗口连接实例
2019/06/19 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
Django框架反向解析操作详解
2019/11/28 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
PHP开发工程师面试问题集锦
2012/11/01 面试题
服装设计专业毕业生推荐信
2013/11/09 职场文书
写好自荐信需做到的5要点
2014/03/07 职场文书
供货协议书范本
2014/04/22 职场文书
学校节能减排方案
2014/06/13 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
乐山大佛导游词
2015/02/02 职场文书
财务出纳岗位职责
2015/03/31 职场文书
勤俭节约主题班会
2015/08/13 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书