pythoncodecs.open使⽤_pythoncodecs.open()及⽂件操做⽂件读取:数组
codecs.open(filepath,method,encoding)安全
filepath--⽂件路径函数
method--打开⽅式,r为读,w为写,rw为读写编码
encoding--⽂件的编码,中⽂⽂件使⽤utf-8
⼀. python打开⽂件代码以下:指针
f = open("d:\", "w")
说明:
第⼀个参数是⽂件名称,包括路径;
第⼆个参数是打开的模式modecode
'r':只读(缺省。若是⽂件不存在,则抛出错误)
'w':只写(若是⽂件不存在,则⾃动建⽴⽂件)
'a':附加到⽂件末尾
'r+':读写 xml
若是须要以⼆进制⽅式打开⽂件,须要在mode后⾯加上字符"b",好⽐"rb""wb"等blog
2、python读取⽂件内容f.read(size)
参数size表⽰读取的数量,能够省略。若是省略size参数,则表⽰读取⽂件全部内容。
在避免将全部⽂件内容加载到内存中,这种⽅法经常使⽤,便于提升效率。
3、python写⼊⽂件f.write(string)
将⼀个字符串写⼊⽂件,若是写⼊结束,必须在字符串后⾯加上"\n",⽽后f.close()关闭⽂件
4、⽂件中的内容定位
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
5、关闭⽂件释放资源⽂件操做完毕,必定要记得关闭⽂件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'中⽂')
writelines()方法将什么写入文件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。须要在代码⽂件的第⼀⾏或第⼆⾏添加编码指⽰:
# coding=utf-8 ##以utf-8编码储存中⽂字符
print '中⽂'像上⾯那样直接输⼊的字符串是按照代码⽂件的编码来处理的,若是⽤unicode编码,有如下2种⽅式:
s1 = u'中⽂' #u表⽰⽤unicode编码⽅式储存信息
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小时内删除。