今天想写个程序合并文件的,之前一直以为python的编码解码好烦,只要处理文件合并之类的都是用C# 写,可是最近用的是linux,也没有vs,就只能乖乖的用python 写了,早上看了下,也没有我想的负责,只能说之前太那啥了。。。。好了,闲话少说,下面先简单介绍下文件读取操做吧。前端
首先说明的是我用的python2.7,python读取文件内容主要有下面几种经常使用方法:先来个测试,方面你们能够清晰了解每种方法具体是啥样子的。python
文件的内容是下面这样的linux
一种:fopen.read(size) python2.7
参数size指的是读取数量,若是省略的化,表示的读取整个文件内容函数
1 # coding=utf-8 2 fopen=open('train2.txt','r') 3 text=fopen.read() 4 print(text)#默认读取所有内容
显示整个文本内容,以下:测试
二种:fopen.readline()读取文件一行的内容编码
三种:fopen.readlines()读取全部的行到list里面,[line1,line2,...lineN] 这是一种经常使用的方法,避免将全部文件加载到内存,提升运行效率spa
fopen=open('train2.txt','r') lines=[] lines=fopen.readlines() for line in lines: print(line)
读文件差很少就这样了,下面咱们来讲下写文件,这就涉及到编码问题了,python中的写文件为fout.write(str),str为一个字符串。code
对于中文字符的写入大多会由于编码问题提示出错。blog
py文件默认是ASCII编码 ,因此在显示中文的时候,会t提示SyntaxError: Non-ASCII character之类的错误,首先在代码前端加入:
# coding=utf-8
unicode是一个内置函数,第二个参数指示源字符串的编码格式。
decode是任何字符串具备的方法,将字符串转换成unicode格式,参数指示源字符串的编码格式。
encode也是任何字符串具备的方法,将字符串转换成参数指定的格式。
用 u'汉字' 构造出来的是unicode类型,不用的话构造出来是str类型
从unicode转str,要用encode方法
从str转unicode,要用decode
因此在写入中文的时候,代码以下:
# coding=utf-8 fopen=open('train2.txt','r') fout=open('2.txt','w') lines=[] lines=fopen.readlines() for line in lines: #以gbk编码读取(固然是读取gbk编码格式的文字了)并忽略错误的编码,转换成utf-8编码输出 line.decode('gbk','ignore').encode('utf-8') fout.write(line) fout.write('\n')#这是换行
设置默认编码
设置默认编码,我以为对于一些文件的读写仍是挺有用处的,形式以下面这样
import sys sys.getdefaultencoding() reload(sys) sys.setdefaultencoding('utf-8')
好了,读写文件差很少这些也够用了,下面说个简单的正则,这个放在下篇了