Python對txt文件進行讀,寫,追加,修改操作(open,pandas,numpy)
阿新 • • 發佈:2021-02-19
技術標籤:python
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)