山东网站建设维护,东营网站建设服务电话,百度网盟推广官网入口,石家庄的网站的公司【python技巧】文本文件的读写操作 0. 背景1. file库的文件操作1.1 打开文件---file.open()1.2 读取文件---file.read()1.3 写入文件---file.write()1.4 查找内容---file.seek() 2. re库的文本处理参考资料 0. 背景
最近在写后端接口的时候#xff0c;需要对.c、.conf等类型的… 【python技巧】文本文件的读写操作 0. 背景1. file库的文件操作1.1 打开文件---file.open()1.2 读取文件---file.read()1.3 写入文件---file.write()1.4 查找内容---file.seek() 2. re库的文本处理参考资料 0. 背景
最近在写后端接口的时候需要对.c、.conf等类型的文件进行读写操作在这里整理一下学习收获。
1. file库的文件操作
file库是python中用于处理文件的读取、修改等操作引入方式为
import file1.1 打开文件—file.open()
使用open()函数打开文件语法为:
import file
fopen(file_namexx.txt, moder, buffering-1, encodingNone, errorsNone, newlineNone, closefdTrue, openerNone)其中file_name为文件名mode为打开文件的模式buffering为缓冲区大小encoding为编码格式errors为错误处理方式newline为换行符closefd为关闭文件描述符opener为自定义开启方式。 比较常用的参数为file_name、mode、encoding。 file_name是文件的绝对路径或者相对路径。 mode的常用取值如下 encoding的常用取值如下 目前常用的文本文件编码格式有ASCII、GB2312、GBK、GB18030、BIG5、ISO-8859-1、UCS-2、UTF-16、UTF-8。 其中ASCII通常为英文字符编码GB2312、GBK、GB18030、BIG5为中文字符编码ISO-8859-1为西欧字符编码UCS-2、UTF-16、UTF-8为通用字符编码。 在实际编码过程中常用的是UTF-8编码。
1.2 读取文件—file.read()
文件读取的方式有两种一种是一次性读取所有内容一种是按行读取。 假设有文件xx.txt内容如下
第一行内容
第二行内容
第三行内容
第四行内容
……一次性读取所有内容
import file
with open(file_namexx.txt, moder) as f:contentf.read()#从头到尾进行文件读取
print(content)#打印整个文件内容输入效果类似于
第一行内容第二行内容第三行内容第四行内容……read()还可以传入数字形成read(n)表示读取n个字符。
按行读取 按行读取有两个函数readline()和readlines()。 其中readline()是每次读取一行文件内容readlines()是将文件内容按行读取到一个列表中。 readline()的使用方法如下
import file
content_line读取内容\n#设置起始内容
with open(file_namexx.txt, moder) as f:while content_line:##当读取内容不为空的时候print(content_line)#打印整个文件内容content_linef.readline()#逐行读取文件内容输入效果类似于
第一行内容
第二行内容
第三行内容
第四行内容
……readlines()的使用方法如下
import file
with open(file_namexx.txt, moder) as f:contentf.readlines()#读取全部文件内容按行分割形成列表
print(content)#打印整个文件内容是一个列表格式输入效果类似于
[第一行内容
第二行内容
第三行内容
第四行内容
……]1.3 写入文件—file.write()
文件写入的方式有两种一种是一次性写入所有内容一种是按行写入。
一次性写入所有内容
import file
content待写入内容可以很长#设置写入内容
with open(file_namexx.txt, modew) as f:f.write(content)#写入文件这是使用的是覆盖写入按行写入 按行写入函数为writelines()将列表中的内容按行写入文件。 writelines()的使用方法如下
import file
content[写入内容1\n,写入内容2\n,写入内容3\n]#设置写入内容
with open(file_namexx.txt, modew) as f:f.writelines(content)#写入文件此时文件内容为
写入内容1
写入内容2
写入内容3需要注意的是如果列表content中的元素没有添加换行符writelines()不会自动添加换行符因此可能会出现多行内容写入到一行的情况。 因此如果需要换行需要在列表中的元素中添加换行符。
1.4 查找内容—file.seek()
tell()函数用于判断文件指针当前所处的位置 使用方式如下
import file
with open(file_namexx.txt, moder) as f:print(f.tell())f.read(1024)print(f.tell())输出结果为
0
1024而seek()函数用于移动文件指针到文件的指定位置。 常见的使用方式如下
import file
with open(file_namexx.txt, moder) as f:print(f.tell())#输出0f.read(1024)print(f.tell())#输出1024f.seek(203)#从文件头开始移动到第203个字符处print(f.tell())#输出203在这里介绍一下seek函数的参数
seek(offset, whence)
# offset必需参数偏移量相对于某一个基点的字符移动距离正数表示按照文件流方向向后移动负数表示逆着文件流方向向前移动
# whence可选参数可设置基点位置0表示文件头默认情况下1表示当前位置2表示文件尾2. re库的文本处理
当然在Python中还有一个专门用于文本处理的库那就是re库。
我们读取文件内容肯定不是单纯为了输出或者重新写入对于文本我们一定有一些查找、定位的需求。
在python中使用正则表达式能应付大多数情况下的数据处理需要这就需要用到re库因此我会在后续的更新中跟进正则表达式和re库的相关知识敬请期待。
参考资料
Python3 File(文件) 方法Python文件基本操作整理Python 文件处理–详细整理Unicode,ASCII,UTF-8的区别Python seek()和tell()函数详解