File = open(‘文件名’,‘r‘,encoding = ‘utf-8’) 文件有r w a 模式 分别是读 写 追加
Data = File.read() 读取如果读取了一次之后 ,就会跳转到最后一个字符串内容,所以可以使用file.seek(0) 跳转到字符串第一个字的位置,重新read即可
File.close() 关闭文件
File.write() 向文件里写内容,如果有这个文件内容全部覆盖,如果没有,就建立这个文件。
File.seek() 调整光标到那个字符
File.tell() 返回光标所在的位置 ## tell和seek都是按字节来查找和跳转的(gbk两者字节占一个字符,utf8 三个字节占一个字符) read是按字符
File.truncate() 截断光标之后的字符串
File.trunacet(6) 从第六个字节往后截断
File.flush() 强制将内存中数据刷新到磁盘中
Eval() 使字符串变成对应的数据类型
Str() 使字典、列表、元祖、集合等数据类型的值转换成字符串类型
file = open('data','rb') # 加一个b 是使用二进制模式来读,人不可读,可用来网络传输
假如你不知道你要处理的文件是什么 编码可怎么办呢?
导入chardet包 --chardet包python默认是没有的 需要使用pip install chardet 如果没有pip 命令自行安装,如果安装pip 命令时,出现了setuptool报错,则先安装pip命令
>>> chardet.detect(data.read())
{'encoding': None, 'confidence': 0.0, 'language': None}
可以读出来的编码是个大概的判断,可以根据判断来试验编码,然后通过decode解码解相应的编码看是否能正常显示
文件比较小的话可以使用正常的read来读 但是如果文件特别大,为了节省内存,我们要使用边写边读的方法,循环方法
File = open(‘data‘,’r’)
For line in file:
Print(line)
File.close()
追加
file = open('data1','a')
file.write('zhangjian is handsome,ccn is beatiful
')
file.close()
读写混合模式
r+ 读写模式 -- 写读模式不会将文件内容覆盖 先读后写,以读的模式打开
w+ 写读模式 -- 读写模式会将文件内容覆盖 先写后读,以创建的模式打开
修改文件内容
# -*- coding:utf-8 -*- import os file_name = "data1" file_new_name = "%s.new"%file_name old_str = 'is' new_str = 'and' f = open(file_name,'r') f_new = open(file_new_name,'w') for line in f: print(type(line)) if old_str in line: line = line.replace(old_str,new_str) f_new.write(line) # f.flush() # f_new.flush() f.close() f_new.close() os.rename(file_new_name,file_name)
# -*- coding:utf-8 -*- file_name = 'data1' old_str = "wu" new_str = "su wu kong" #lista = [] f = open(file_name,'r+') data = f.read() f.seek(0) f.truncate() for line in data: if old_str in data: line = line.replace(old_str,new_str) f.write(line) f.close()