https://my.oschina.net/mcyang000/blog/289460
 
打开路径含有中文的文件时,要注意:
1 在windows对文件名编码是采用gbk等进行编码保存,所以要将文件路径先解码,在按gbk编码: 
字符串--解码成unicode--编码(注意str和unicode的转换)

with open(r"D:\我的文档\桌面\python\config.ini".decode('utf8').encode('gbk'),'rb') as f:
print f.read()

 
或者采用
#coding=utf-8 #当然这里要在前面设置系统的编码方式
with open(ur"D:\我的文档\桌面\python\config.ini".encode('gbk'),'rb') as f:  
 
或者with open(ur"D:\我的文档\桌面\python\config.ini",'rb') as f:
 
 
 
 
 
摘要: 在windows使用gbx(gb2312,gbk,gb18030我也不知道是哪个)对文件名及文件路径进行编码保存。打开文件的函数中使用诸如open(filename.encode('gbk'))可以很好的解决。另外路径分隔符要写Unix风格的'/',不要写'\'

windows使用gbx(gb2312,gbk,gb18030我也不知道是哪个)对文件名及文件路径进行编码保存。打开文件的函数中使用诸如open(filename.encode('gbk'))可以很好的解决。

#coding:utf8

if __name__  == '__main__':
srcfile = r"D:/测试路径/测试文件.txt"
f = open(srcfile.decode('utf8').encode('gbk'))
for text in f.readlines():
print text.decode('gbk')
f.close()

或者:

#coding:utf8

if __name__  == '__main__':
srcfile = u"D:/测试路径/测试文件.txt"
f = open(srcfile.encode('gbk'))
for text in f.readlines():
print text.decode('gbk')
f.close()

上述两种方法均可。

另外,不要下面被这句话干扰:

print text.decode('gbk')

它只表示文件内容是用gbk编码的。更多内容可见 http://my.oschina.net/iuranus/blog/262914

补充说明:这里这样写也是可以打开的:

srcfile = u"D:/测试路径/测试文件.txt"
f = open(srcfile)

但是在使用opencv库时,cv2.imread(srcfile),srcfile必须以gbk编码(srcfile.encode('gbk'))才能打开,同时要注意是unix风格的'/',而不是'\'。

[python IO学习篇] [打开包含中文路径的文件]的更多相关文章

  1. [python IO学习篇]补充打开中文路径的文件

    http://blog.csdn.net/mottolinux/article/details/525600621 关于Python编码的基本常识 在python里面 “明文”是unicode类型和s ...

  2. [python IO学习篇] 补充.py文件是中文, .ini文件内容是中文

    python 代码文件的编码.py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character.需要在代 ...

  3. [python IO学习篇] 补充中文编码

    http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820066616a7 ...

  4. Java NIO 学习笔记(五)----路径、文件和管道 Path/Files/Pipe

    目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...

  5. python 兼容中文路径 + 目标文件是否是图像格式判断

    1. 中文路径兼容python程序如果路径中包含中文字符,不加处理会有类似报错:'ascii' codec can't decode byte 0xxx in position xx:ordinal ...

  6. __x__(47)0910第六天__IE6到IE11对于包含中文路径的png显示问题

    问题:IE6额外地除了中文路径外,对于png24的支持度不高,以致于无法透明. 解决方法1,png8 替换: png8 比 png24 小,质量较低,但是在这里可以替代,以解决问题. 使用 ps 打开 ...

  7. Python+Selenium基础篇-打开和关闭火狐浏览器

    本节介绍如何初始化一个webdriver实例对象driver,然后打开和关闭firefox浏览器.要用selenium打开fiefox浏览器.首先需要去下载一个driver插件geckodriver. ...

  8. python print 打印的数据包含中文,打印报错UnicodeDecodeError: 'gbk' codec can't decode bytes in position 459-460: illegal multibyte sequence解决办法

    python 2.7 print 的数据中若包括中文,打印则会报错UnicodeDecodeError: 'gbk' codec can't decode bytes in position 459- ...

  9. [python][django学习篇][7]设计博客视图(1)

    1上网的流程: 打开浏览器,输入网址(http://zmrenwu.com/) 浏览器根据输入网址,完成以下几件事:1识别服务器地址,2将用户的浏览意图打包成一个http请求,发送给服务器,等待服务器 ...

随机推荐

  1. pre-empting taskintel手册-Chapter7-Task Management

    这节描述了IA-32架构的任务管理功能,只有当处理器运行在保护模式的时候,这个功能才是有效的,这节的侧重点在32位任务和32位TSS结构上,关于16位的任务和16位TSS结构,请看7.6节,关于64位 ...

  2. 从SAP客户主数据里直接创建商机(Opportunity)

    在SAP CRM Fiori的Account应用里,直接在Account页面创建商机: 在SAP Cloud for Customer里: 要获取更多Jerry的原创文章,请关注公众号"汪子 ...

  3. SAP标准培训课程C4C10学习笔记(三)第三单元

    第三单元:Account and Contact management Account和Contact概念和SAP CRM里是一样的: 并且支持同ERP和CRM的客户主数据做同步. 关于具体的同步场景 ...

  4. Eclipse中添加MyEclipse插件

    下载准备: 下载myeclipse7.0:http://downloads.myeclipseide.com/downloads/products/eworkbench/7.0M1/MyEclipse ...

  5. 一个.java文件内只能写一个class吗

    先给结论:当然不是!! 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致.一个文件中可以不含public类,如果只有一个非public类,此时可以跟文件名不同. 为 ...

  6. Kunernetes集群架构与组件

    架构如图: master节点:主要是集群控制面板的功能,来管理整个集群,包括全局的角色,调度,都是在master节点进行控制 有三个组件: API Server:  是 k8s提供的一个统一入口,它是 ...

  7. destoon登录后跳转到指定网址

    打开module\member\register.inc.php文件搜索:<input type="hidden" name="forward" valu ...

  8. Launch Instance---source for openstack

    If you want to create an instance that uses ephemeral storage, meaning the instance data is lost whe ...

  9. Mysql 8.0 新特性

    转载:https://www.jianshu.com/p/be29467c2b0c

  10. C# 调用腾讯地图WebService API获取距离(一对多)

    官方文档地址:https://lbs.qq.com/webservice_v1/guide-distance.html 代码: /// <summary> /// 获取距离最近的点的经纬度 ...