标签:北大 不用 truncate txt ping 原来 python writable cat
文件处理
(1)读
f = open(file=‘D:/python/shopping.txt‘,mode=‘r‘,encoding=‘utf-8‘)
data = f.read()
f.close()
安装第三方工具包
pip3 install chardet#安装
import chardet
f = open(‘shopping.txt‘,‘rb‘) #以二进制打开
data = f.read()
data
chardet.detect(data)#检测data是什么编码
data.decode("gb2312") #从GB2312转码成unicode(decode:解码)
(2)写文件
f = open(file=‘D:/python/shopping.txt‘,mode=‘w‘,encoding=‘utf-8‘)
f.write(‘北大本科美国留学一次50‘) #内容写入文件
f.close()
f = open(’兼职.txt‘,mode=‘w‘,encoding=‘gbk‘)#w是创建新文件,如果创建新文件的时候与原来的重名就清空了
f.write("路飞滨城!").encode(‘gbk‘) #字符为unicode,写入后按gbk编码
f.close()
(3)追加
注意:文件操作时,以”a"或“ab"模式打开,则只能追加,即:在原来内容的尾部追加内容
写入到硬盘上时,必须是某种编码的0101010,打开时需要注意:
ab,写入时需要直接传入以某种编码的0101010,即:字节类型
a和encoding,写入时需要传入unicode字符串,内部会根据encoding制定的编码将unicode字符串转换为该编码的0101010
f = open(“兼职.txt",‘a‘,encoding=‘gbk‘)
f.write("\n杜姗姗 北京 167 49 1333333333")
f.close()
(4)读写模式r+:先读后写
(5)写读模式w+:以创建的模式打开(新写入的可读,原来的内容覆盖了)#基本不用
flush()把文件从内存buffer里强制刷新到硬盘
readable()#判断文件是否可读 w模式为不可读
writable()#判断文件是否可写
readline()#一行一行读
不管是tell还是seek找的都是字节,read是按字符
f.tell()#当前光标的位置
seek()#光标定位位置
utf-8:3个字节
gbk:2个字节
seekable()#二进制文件都可进行seek,特殊文件不可seek(例如:终端文件)
truncate()#按指定长度截断文件,f.truncate()当前位置往后截断
truncate(3)#加数字表示从头开始截多少
修改文件
f = open("兼职.txt",‘r+‘)
f.seek(6)#移动光标到第6个位置
f.write("路飞索隆")#从第6个位置开始会覆盖后面的内容(字符长度一样的话可修改)
f.close()
修改文件 占硬盘
f_name = "兼职.txt"
f_new_name = "%s.new" %f_name
old_str = "胡一菲"
new_str = "陈红"
f = open(f_name,"r",encoding="utf-8")
f_new = open(f_new_name,"w",encoding="utf-8")
for line in f_name:
if old_str in line:
line = line.replace(old_str,new_str)
f_new.write(line)
f.close
f_new.close
重命名
import os #调用系统命令
os.rename(f_new_name,f_name)#把新文件保存为旧文件名
标签:北大 不用 truncate txt ping 原来 python writable cat
原文地址:https://www.cnblogs.com/MrHB/p/9091121.html