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

http://blog.csdn.net/mottolinux/article/details/525600621 关于Python编码的基本常识

在python里面 “明文”是unicode类型和str , “密文”是其他的编码格式 如gbk utf-8 latin-1等等
编码: “明文”->”密文” .encode([目标编码格式]) 对象必须为unicode类型
解码: “密文”->”明文” .decode([源编码格式]) 对象为str类型
对于汉字 一共有三大类编码方式
以中文汉字”李”为例子
a. unicode类 机器码 \x67\x4e
unicode(python表示) \u674e
HTML Entity &#x674E
UTF-16(BE) 0x674E
UTF-32(BE) 0x0000674E
b. UTF-8类 机器码 \xe6\x9d\x8e
UTF-8(python表示) \xe6\x9d\x8e
URL Escape Code %E6%9D%8E
Octal Escape Sequence \346\235\216
c. gb类 机器码 \xc0\xee
gb2312 gbk gb18030 \xc0\xee
2 设置 .py文件上的中文编码格式

    (1)py文件内容上出现字符串上的中文
    (2)包括前面带u的(转换成unicode格式的字符串) 首先也是根据设置的文件编码格式读取字符串文字量 再作unicode的转换
    (3)如果添加了#coding=utf-8,则将中文按utf-8转成unicode
    (4)如果没有添加#coding=utf-8,则按系统默认的编码格式
    (5)系统的默认编码,获取代码:
            sys.getdefaultencoding()

3 如何设置.py文件的编码格式:
    (1)#coding=<encoding>

    (2)<encoding>根据编辑器不同而不同
            sublime 编辑器默认是utf-8
            win7自带的操作系统:asciii /gbk--要读取中文,要gbk
            可以另存为:utf-8
4 win7文件名是中文或者文件夹是中文
    (1)都是gbk编码
    (2)读写文件时,必须open(.....encode(‘gbk‘),‘r‘)
5 win7文件上的内容包含中文
    (1)和4的不一样
    (2)文件的内容要根据编码的格式(记事本可能另存为)
    (3)建议编码成utf-8,sublime打开不需要转换
6 爬虫结果的存储
    (1)现在的网页基本都是UTF-8编码(HTML5默认编码)
    (2)经过BeautifulSoup处理后的HTML元素内容 类型为NavigableString
    (3)可以直接print 由第3点可推断出 NavigableString底层类型为unicode
    (4)经过.replace()方法后可转换为unicode类型

7 不提倡
    (1)不使用sys.setdefaultencoding(‘utf-8’)解决编码问题
8 其他
    (1)字符串中间处理过程全部转化为unicode处理 只在数据的入口和出口作相应的.decode()和.encode()处理
时间: 2024-10-11 23:09:10

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

[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编码方式储存

[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.re

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

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

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

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

Qt、Vc下用fopen打开中文名字的文件

在做一个Qt项目的时候,完成上传文件时,通过fopen打开文件用来读时发现fopen不能打开中文的文件名,自己在网查找一下,解决方法如下 参考:http://weidaohang.org/wangluo/h/index.php?q=aHR0cDovL3d3dy5qYjUxLm5ldC9hcnRpY2xlLzUxOTY2Lmh0bQ%3D%3D 代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 boolUTF8ToUnicode(

【Python基础学习篇】Python字典

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

【Python基础学习篇】Python基本语法

一.Python的文件类型 Python的文件类型主要分为3种,分别是源代码.字节代码和优化代码. 1.源代码 以py为扩展名 2.字节代码 Python源文件经过编译后生成扩展名为pyc的文件,pyc是编译过的字节文件.这种文件不能使用文本编辑工具打开或修改. 下面这段脚本可以把hello.py文件编译为hello.pyc文件 import py_compile py_compile compile("hello.py") 将此脚本保存为以py为扩展名的文件,运行后即可得到hello

[python][django学习篇][搭建简单的django开发环境]---暂时不搭建mysql

http://zmrenwu.com/post/3/ 1 搭建Python的虚拟环境: 安装virtualenv (前提是已经安装好Python和Pip)      pip install virtualenv 电脑新建目录:D:\software\python_virtual_envs\djanoproject_env 执行命令virtualenv D:\software\python_virtual_envs\djanoproject_env 执行虚拟环境:运行D:\software\pyt

【Python基础学习篇】Python控制语句

一.结构化程序设计 结构化程序设计是以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块. 下图为描述判断摸个数字是属于正数.负数还是零的流程图. 结构化程序设计的主要方法是-自顶向下.逐步细化.把需要解决的问题分成若干个任务来完成,再对每个任务进行设计,逐步细化. 结构化程序设计分为3中结构: 1.顺序结构 2.判断结构 3.循环结构 --------------------------------------------------------------------------