1. 程式人生 > 其它 >Python對txt文件進行讀,寫,追加,修改操作(open,pandas,numpy)

Python對txt文件進行讀,寫,追加,修改操作(open,pandas,numpy)

技術標籤: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)