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=’,’ 以逗号为间隔,也可以空格

python 在文件中追加 python对文件追加内容的方法_读后写

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方式

python 在文件中追加 python对文件追加内容的方法_读后写_02

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)

python 在文件中追加 python对文件追加内容的方法_python 在文件中追加_03

追加

先读后插入
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)