Luffy Second Modular -- 文件处理
python中的文件处理分为,读、写和修改。
f = open(" 文件路径 "," 文件打开方式 ", " 文件的编码格式 ")
打开文件:
文件以什么编码存储的,读取的时候就要以什么编码去读取,否则会报错。python3的默认编码为utf-8,读取文件的时候需要先确定文件的编码,如果不是utf-8就需要指明以什么编码打开。例如存的是gbk,打开的时候就要告诉open方法要以gbk的方式打开,否则就会报错。
二进制打开方式:
二进制打开文件,把文件打开方式设置为 rb 模式,且不能指定文件编码,否则会报错。
二进制打开的文件,就是把硬盘上的二进制直接读取到内存,理论上来说二进制打开的并不是给人识别的,而是用于远程传输,图片、视频等不可读的文件。
智能检查编码第三方库:
chardet.detcet(字节流) 返回的是一个字典,字典的encoding键存的就是文件的编码,后面是置信程度,后面是语言类别:Chinese
文件的内置操作方法:
flush 将文件强制刷新到硬盘里面,修改的数据先是在内存里面,文件关闭的时候或者缓存满了之后才会被写入硬盘,flush是强制的给立刻写到硬盘
readline 一行一行的读文件,遇到\n, \r 停止
seek 将文件的光标移动到指定的位置(移动是按照字节计算的,不是按照字符计算的)
tell 返回光标的当前位置,同上返回的也是字节位置,不是字符位置。read(1)读的是字符一个字符
truncate 按照指定长度截断文字,如果指定了长度,就重文件的头部文字开始保留指定长度,不指定长度的话就是全部截断。
文件内容的替换:
对文件一行一行的读取,读取一行对这一行进行判断,是否需要修改,要修改的话就修改完,然后写入一个新的文件,如果不用修改就直接写入新的文件。
import os # 对系统进行操作的工具箱
f_name = ' 原文件.txt '
f_new_name = ' 新文件.txt '
old_str = ' 被替换数据 '
new_str = ' 替换数据 '
f = open(f_name , 'r' ,encoding = 'utf-8')
new_f = open(f_new_name, 'w', encoding = 'utf-8')
for line in f:
if old_str in line:
lien = line.replace(old_str, new_str)
new_f.write(lien)
f.close()
new_f.close()
os.rename(f_new_name,f_name) #调用os,将文件重新命名然后覆盖掉旧的文件,起到文件修改的效果。
浙公网安备 33010602011771号