python 文件操作 中文编码
来源:互联网 发布:PHP api创建窗口 编辑:程序博客网 时间:2024/04/29 02:47
1.文件操作
os.mknod("test.txt") #创建空文件fp = open("test.txt",'w') #直接打开一个文件,如果文件不存在则创建文件
open模式:
r:以读方式打开,可读取文件信息。所有读操作完毕,都会把文件指针移到读之后的位置。
w:以写方式打开,如文件存在,则清空文件,再写入新内容
a:以追加模式打开(从EOF开始,必要时创建新文件)
r+:以读写模式打开
w+:消除文件内容,然后以读写模式打开
a+:以读写模式打开,并把文件指针移到文件尾
b:以二进制模式打开文件
fileName='D:/Python7/ab.txt'fr=open(fileName,'r')#fr.read([count]) #读取文件,如果有count,则读出count个字节#print fr.read() #读取全文,返回的类型是str,读完后,文件指针移到文件末尾#print fr.read(20) #读取20个字符(还是字节?)#fr.readline() #读出一行信息,读完一行后,指针后移,下次再读就是读第2行#循环输出文件#for l in fr.readlines():# print l#fr.close()
2. 中文编码
2.1 编码种类
- ASCII:单字节编码(0-127),只能表示英文和许多控制符号
- MBCS(Multi-Byte Character Set),多字节编码,如GBxxx,BIGxxx等,GBK是ANSI的一种,属于ANSI
- Unicode 所有语言的字符都用同一种字符集来表示,这就是Unicode
- UTF-8 :是变长的,并且兼容ASCII,ASCII字符使用1字节表示。
2.2 python中的str和unicode
str和unicode都是basestring的子类。严格意义上说,str其实是字节串,它是unicode经过编码后的字节组成的序列。对utf-8编码的str’汉’使用len()函数时,结果是3,因为实际上,utf-8编码的’汉’==’\xE6\xB1\x89’。
unicode才是真正意义上的字符串,对字节串str使用正确的字符编码进行解码后获得,并且len(u’汉’)==1
不能对unicode进行解码
u = u'汉' #unicodeprint repr(u) # u'\u6c49's = u.encode('UTF-8') #unicode编码成utf-8print repr(s) # '\xe6\xb1\x89'u2 = s.decode('UTF-8') #从utf-8解码成unicodeprint repr(u2) # u'\u6c49'# 对unicode进行解码是错误的# s2 = u.decode('UTF-8')# 同样,对str进行编码也是错误的# u2 = s.encode('UTF-8')
2.3 读写文件
内置的open方法打开文件时:
- read()读取的是str,读取后需要使用正确的编码格式进行decode()。
- write()写入时,如果参数是unicode,则需要使用你希望写入的编码进行encode(),如果是其他格式的str,则需要先用str的编码进行decode(),转成unicode后再使用写入的编码进行encode()。如果直接将unicode作为参数传入write()方法,python将先使用源代码文件声明的字符编码进行编码然后写入。
# coding:UTF-8a='汉字'import codecsfr=codecs.open("1.txt",'w',encoding='utf-8')fr.write(a)//报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)#要这样写:fr.write(a.decode('utf-8'[,'ignore'])#这里a的类型是str,字符串,怎么知道是utf-8编码的字符串呢?因为在第一行写了#coding:utf-8#如果首行是#coding:gbk,那么字符串就会用gbk编码,写入文件的时候就要decode('gbk')fr.close()
2.4 python默认编码
import sysreload(sys)sys.setdefaultencoding('utf-8')
2.5 unicode-escape
在Python里面使用unicode型的字符是这样:
>>> a = u'你好'>>> a>>> u'\u4f60\u597d'>>> print a>>> 你好#那我现在有个字符串是str型的,而且内容已经是unicode编码,比如:>>> b = '\u4f60\u597d'>>> b>>> '\\u4f60\\u597d'>>> print b>>> \u4f60\u597d>print b.decode('unicode_escape')
现在要将b转换成unicode的“你好”,也就是a那样,该怎么做?
How do I treat an ASCII string as unicode and unescape the escaped characters in it in python?
3.python写入中文到数据库
第一步:数据库那边总得把字段类型设置为utf8之类类的吧。
第二步:在连接数据库的时候,加个参数,说明数据库那边的字段类型一致,charset=’utf8’。
大概就是这样:
conn =MySQLdb.connect(host="127.0.0.1",user="nimei",passwd="nimei",db="nimei",charset="utf8")
0 0
- python 文件操作 中文编码
- python 中文编码问题 文件
- Python 文件读写,中文编码
- python文件操作编码问题
- python操作mysql中的中文编码问题
- python 中文编码处理与文件读写
- Python:文件读写及中文编码处理
- python读取中文gbk编码json文件
- 简单解决Python文件中文编码问题
- Python环境编码与MySQL中文编码操作
- python+mysql 操作数据库出现的中文编码问题
- python中读写文件及中文编码处理方法
- python写中文utf-8编码csv文件
- python中读写文件及中文编码处理方法
- python中读写文件及中文编码处理方法【整理】
- html显示中文及python文件编码问题!
- Python | 多种编码文件(中文)乱码问题解决 chardet模块
- Python 中文 编码
- 【Cocos2d-js官方文档】 五、Cocos2d-JS v3.0的新Action API
- mod_gsoap(gsoap与Apache服务器的集成)
- java静态变量在方法区,只有1份
- GRE写作必备句型
- MFC创建DLL
- python 文件操作 中文编码
- 线性表
- Jquery Validate 相关参数及常用的自定义验证规则
- ES6 中的生成器函数介绍
- 在android上使用ASCII显示特殊符号
- 工商移动执法指挥系统
- 排序算法的分析总结
- 原码、反码、补码和移码其实很简单
- hdu2089 数位dp