python读写⽂件,设置⽂件的字符编码⽐如utf-8
⼀. python打开⽂件代码如下:
writelines()方法将什么写入文件f = open("d:\", "w")
说明:
第⼀个参数是⽂件名称,包括路径;
第⼆个参数是打开的模式mode
'r':只读(缺省。如果⽂件不存在,则抛出错误)
'w':只写(如果⽂件不存在,则⾃动创建⽂件)
'a':附加到⽂件末尾
'r+':读写
如果需要以⼆进制⽅式打开⽂件,需要在mode后⾯加上字符"b",⽐如"rb""wb"等
⼆、python读取⽂件内容f.read(size)
参数size表⽰读取的数量,可以省略。如果省略size参数,则表⽰读取⽂件所有内容。
在避免将所有⽂件内容加载到内存中,这种⽅法常常使⽤,便于提⾼效率。
三、python写⼊⽂件f.write(string)
将⼀个字符串写⼊⽂件,如果写⼊结束,必须在字符串后⾯加上"\n",然后f.close()关闭⽂件
四、⽂件中的内容定位
f.seek(0)
这个函数的格式如下(单位是bytes):f.seek(offset, from_what) from_what表⽰开始读取的位置,offset表⽰从from_what再移动⼀定量的距离,⽐如f.seek(10, 3)表⽰定位到第三个字符并再后移10个
字符。
from_what值为0时表⽰⽂件的开始,它也可以省略,缺省是0即⽂件开头。下⾯给出⼀个完整的例⼦:
f = open('/tmp/workfile', 'r+')
f.write('0123456789abcdef')
f.seek(5) # Go to the 6th byte in the file
f.seek (-3, 2) # Go to the 3rd byte before the end
五、关闭⽂件释放资源⽂件操作完毕,⼀定要记得关闭⽂件f.close(),可以释放资源供其他程序使
只是ASCII或者gbk编码格式的的⽂件读写,⽐较简单,读写如下:
# coding=gbk
f = open('c:/','r') # r 指⽰⽂件打开模式,即只读
s1 = f.read()
s2 = f.readline()
s3 = f.readlines() #读出所有内容
f.close()
f = open('c:/','w') # w 写⽂件
11 f.write(s1)
12 f.writelines(s2) # 没有writeline
13 f.close()
六. f.writelines不会输出换⾏符。
python unicode⽂件读写:
# coding=gbk
import codecs
f = codecs.open('c:/','a','utf-8')
f.write(u'中⽂')
s = '中⽂'
f.write(s.decode('gbk'))
f.close()
f = codecs.open('c:/','r','utf-8')
s = f.readlines()
f.close()
for line in s:
de('gbk')
python代码⽂件的编码
py⽂件默认是ASCII编码,中⽂在显⽰时会做⼀个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character。需要在代码⽂件的第⼀⾏或第⼆⾏添加编码指⽰:
1. # coding=utf-8 ##以utf-8编码储存中⽂字符
2. print '中⽂'像上⾯那样直接输⼊的字符串是按照代码⽂件的编码来处理的,如果⽤unicode编码,有以下2种⽅式:
1. s1 = u'中⽂' #u表⽰⽤unicode编码⽅式储存信息
2. s2 = unicode('中⽂','gbk')
unicode是⼀个内置函数,第⼆个参数指⽰源字符串的编码格式。
decode是任何字符串具有的⽅法,将字符串转换成unicode格式,参数指⽰源字符串的编码格式。
encode也是任何字符串具有的⽅法,将字符串转换成参数指定的格式。
python字符串的编码
⽤ u'汉字' 构造出来的是unicode类型,不⽤的话构造出来是str类型
str的编码是与系统环境相关的,⼀般就是filesystemencoding()得到的值
所以从unicode转str,要⽤encode⽅法
从str转unicode,所以要⽤decode
例如:
# coding=utf-8 #默认编码格式为utf-8
s = u'中⽂' #unicode编码的⽂字
de('utf-8') #转换成utf-8格式输出
print s #效果与上⾯相同,似乎默认直接转换为指定编码
我的总结:
u=u'unicode编码⽂字'
de('gbk') #转换为gbk格式
print g #此时为乱码,因为当前环境为utf-8,gbk编码⽂字为乱码
str=g.decode('gbk').encode('utf-8') #以gbk编码格式读取g(因为他就是gbk编码的)并转换为utf-8格式输出
print str #正常显⽰中⽂
安全的⽅法:
s.decode('gbk','ignore').encode('utf-8′) #以gbk编码读取(当然是读取gbk编码格式的⽂字了)并忽略错误的编码,转换成utf-8编码输出
因为decode的函数原型是decode([encoding], [errors='strict']),可以⽤第⼆个参数控制错误处理的策略,默认的参数就是strict,代表遇到⾮法字符时抛出异常;
如果设置为ignore,则会忽略⾮法字符;
如果设置为replace,则会⽤?取代⾮法字符;
如果设置为xmlcharrefreplace,则使⽤XML的字符引⽤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论