一、txt类文本文件的读写
使用python处理数据文件较多,而且大部分数据文件保存在文本文件中(例如:‘ .txt ’, ' .json ' 文件)
读取文本文件的主要步骤分为:a)打开目标文件; b)获取文件内数据; c)关闭文件
打开文件的一般方式为:
f=open(file_name,access_mode = 'r',buffering = -1)
其中 filen_ame即为目标文件名,输入为字符串形式;access_mode = 'r' 表示执行功能 。‘r’ 表示读取(read);‘w’ 表示写入(write); 'a'表示增加(add),也是写入的一种,直接在已存在文本数据后面新增数据 ;buffering = -1指定缓存方式,-1表示模型缓存,0表示不缓存,1表示缓存一行,n表示缓存n行(没有特殊性能要求,该参数不做修改,直接默认即可)
由于文本文件内容编码方式千变万化,很多时候直接用open()读写会出现编码错误的问题,例如:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)
python代码里稍不注意就会出现这样的错误,特别是在Linux环境下,如果python代码里面出现中文或者异常符号,运行代码时候就会出现这样的错误。此时可以在代码的起始位置增加:# code = 'utf-8' 或者 # coding = UTF-8,最佳的处理方式是引入sys模块。
import sys
reload(sys)
sys.setdefaultencoding('utf-8') # utf-8可以根据需哟更换成其他编码方式
而基于文本文件读写遇到这样的错误,则推荐用python的另外一个模块codecs.
fw = codecs.open('test1.txt','a','utf-8')
或者使用with来实现代码:
with codecs.open('文件名','a',encoding = 'utf-8') as file:
codecs模块可以指定一个编码打开文件,使用这个方法打开的文件读取返回的将是unicode。写入时,如果参数 是unicode,则使用open()时指定的编码进行编码后写入;如果是str,则先根据源代码文件声明的字符编码,解码成unicode后再进行前述 操作。相对内置的open()来说,这个方法比较不容易在编码上出现问题。
一下是几种常见的文本文件读取数据代码:
## 读取文件数据的三种方法
# 方法一 : read(),直接将整个文本内的数据读取到一个字符串中。读取整个文本时候可以,但是读取多行多列数据的时候不推荐。
with codecs.open('test.txt','r',encoding = 'utf-8') as file: # 打开文件
data = file.read() # 读取数据,data为整个文本文件里面的内容,为字符串形式。
file.close() # 关闭文件
# 方法二 : readline(),一行一行的读取,这种操作在以行为单位的数据读取时候比较方便,适合较大数据文件
with codecs.open('test.txt','r',encoding = 'utf-8') as file: # 打开文件
while T