Python对txt文档进行读,写,追加,修改操作
上次写了一篇 Python对csv文档进行读,写,追加操作,这次写一篇关于txt的操作。
本文将使用open,pandas,numpy三种方式对txt文档进行读,写,追加,在此不推荐使用此方式操作➡ f = open(’test.txt’, ‘w’),因为该方法结束时候需要使用f.close(),如果忘记写close,则可能出现数据丢失的情况
1.with open()方式
读:
with open("test.txt","r") as f:
lines=f.readlines() #读行
print(lines)
输出:
['第一行内容\n', '第二行内容']
写:
with open("test.txt","w") as f:
f.writelines('内容')
f.writelines("\n")
追加:
with open("test.txt","a") as f:
f.writelines('内容')
f.writelines("\n")
只需要修改模式,详情如下表
打开方式 | 功能 | Note |
---|---|---|
w | 写 | 若存在内容,原内容会先清空,不存在文件则会新建 |
w+ | 写读(先写后读) | 若存在内容,原内容会先清空,不存在文件则会新建 |
r | 读 | 文件必须存在 |
r+ | 读写(先读后写) | 文件必须存在 |
a | 追加 | 如存在数据,新数据将添加到结尾,不存在文件则会新建 |
a+ | 追加 | 如存在数据,新数据将添加到结尾,不存在文件则会新建 |
wb+ | 二进制方式写读(先写后读) | 若存在内容,原内容会先清空,不存在文件则会新建 |
rb+ | 二进制方式读写(先读后写) | 文件必须存在 |
ab+ | 二进制方式追加 | 如存在数据,新数据将添加到结尾,不存在文件则会新建 |
修改:
修改的方法只能先读后写了
#read
with open(newfile,"r") as f:
lines=f.readlines()
data=[]
for i in lines:
#根据条件修改
if('abc' in i):
i=i.replace('abc','def') #修改abc为def
data.append(i) #记录每一行
#write
with open(newfile,"w") as f:
for i in data:
f.writelines(i)
2.pandas方式
读
header=None 没有列标签,不添加是有列标签,默认是True
sep=’,’ 以逗号为间隔,也可以空格
import pandas as pd
data = pd.read_table('data.txt', sep=',')
print(data)
输出
col_a col_b
0 1 2
1 3 4
写
index=None ,不显示行名字
sep=’,’ 逗号为间隔
import pandas as pd
a = [1,2]
b = [3,4]
data = pd.DataFrame({'col_a':a,'col_b':b})
df=pd.DataFrame(data)
df.to_csv('data.txt',sep=',',index=None)
追加
先读后插入
import pandas as pd
data = pd.read_table('data.txt', sep=' ')
data.loc[data.shape[0]] = {'col_a':1,'col_b':0} # 加行
np.savetxt("data.txt",data)
data.insert(loc=0,column='col_c',value=6)#加列
3.numpy方式
读
import numpy as np
a=np.loadtxt('data.txt')
print(a)
输出:
[[1. 2.]
[3. 4.]]
写
输出的结果带了很多0…
import numpy as np
data = np.array([[1,2],[3,4]])
np.savetxt("data.txt",data)
追加
先读后插入
np.insert(a,0,[5,6],axis=0),第一个0代表的是插入位置,0是第一行
import numpy as np
a=np.loadtxt('data.txt')
data=np.insert(a,0,[5,6],axis=0)
np.savetxt("data.txt",data)