[python IO学习篇] [打开包含中文路径的文件]

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风格的‘/‘,而不是‘\‘。

时间: 2024-10-12 01:11:34

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

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

http://blog.csdn.net/mottolinux/article/details/525600621 关于Python编码的基本常识 在python里面 "明文"是unicode类型和str , "密文"是其他的编码格式 如gbk utf-8 latin-1等等 编码: "明文"->"密文" .encode([目标编码格式]) 对象必须为unicode类型 解码: "密文"->&q

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

1 python 代码文件的编码.py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character.需要在代码文件的第一行或第二行添加编码指示: 1 # coding=utf-8 ##以utf-8编码储存中文字符 2 print '中文' 像上面那样直接输入的字符串是按照代码文件的编码来处理的,如果 用unicode编码,有以下三种方式: 1 s1 = u'中文' #u表示用unicode编码方式储存

windows下Python打开包含中文路径名文件

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

sublime text2 打开包含中文的文件会自动追加.dump后缀解决办法

用sublime text2 打开.c, .h,.txt等文件会自动追加一个.dump后缀,這样在打开.c,.h等文件时无法正常识别,从而无法正常进行语法着色,网上说是因为安装了GBK Encoding Support 插件的问题,于是就删除这个插件,发现再打开不会自动加.dump后缀了,但是遇到中文就乱码了, 因为GBK-.,这个插件就是解决中文乱码用的,那怎么办呢? 其实只要重新保存一下就可以了,比如我打开一个A.h文件,这个里有中文注释, 第一次打开时因为有中文所以sublime text

[C/C++标准库]_[读写中文路径的文件--写入unicode字符串]

场景: 1. 需要写入非ascii文本并且与本地编码无关时,除了utf8,unicode编码是另外一个选择,它的好处是占两个字节,便于统计字符和对字符进行处理,因为有对应的宽字节的函数,如wcslen. 2.需要注意的亮点,要先写入0xff,0xfe文件头,之后使用fwprintf时用%S(大写)格式写入宽字节字符串. 3.使用_wfopen支持中文路径. 代码1: #include <stdio.h> #include <stdint.h> #include <stdlib

rapidxml读取包含中文路径的xml解析错误的解决方法

from http://blog.csdn.net/qinwei4072880/article/details/38865179 1.rapidxml不支持中文路径. 2.rapidxml不支持Unicode xml必须为utf-8编码. 解决方法: #ifdef _UNICODE setlocale(LC_ALL, "Chinese-simplified"); // 设置中文环境USES_CONVERSION;file<> doc(W2A(lpszXml)); setlo

sqlite3实现中文路径sql文件导入另类解决方法

1.需求 程序要实现产品离线数据下载,故采用java端直接拼接sql文件,客户端下载sql文件,合并到本地数据库.性能还行局域网十几秒7兆多,但是存在一个sqlite或sql文件保存在中文路径下无法合并的问题 2.解决 主要原因是因为sqlite打开数据库时使用utf8打开,qt普遍采用unicode编码.网上方法较多,这里采用另外一种方法解决,采用相对路径避开中文路径的问题 3.代码片段 1.创建数据库 QString strdbpath(QDir::currentPath() + "/db&

解决python中路径中包含中文无法找到文件的问题

a="C:\Users\Dell\Desktop\ATOU\公共测试用例" (带中文的路径) a=a.decode("utf-8").encode("gbk") (进行转码) import sys  sys.path.append(a)  (指定路径成功) 合并起来一条: import sys sys.path.append("C:\Users\Dell\Desktop\ATOU\公共测试用例".decode("ut

【Python基础学习篇】Python字典

字典(Dictionary)是由"键-值"对组成的集合,字典中的"值"通过"键"来引用. 一.字典的创建 字典由一系列的"键-值"(key-value)对组成,"键-值"对之间用"逗号"隔开,并且被包含在一对花括号中. 创建字典的格式如下: dictionary_name = {key1:value1,key2:value2,...} 如果需要创建一个空的字典,只需要一对花括号即可,如下