python處理txt文件的常用操作

1.打開文件

#方法1,這種方式使用後需要關閉文件
f = open("data.txt","r")
f.close()

#方法2,使用文件後自動關閉文件
with open('data.txt',"r") as f: 

打開文件的模式主要有,r、w、a、r+、w+、a+

r:以讀方式打開文件,可讀取文件信息。
w:以寫方式打開文件,可向文件寫入信息。如文件存在,則清空該文件,再寫入新內容
a:以追加模式打開文件(即一打開文件,文件指針自動移到文件末尾),如果文件不存在則創建
r+:以讀寫方式打開文件,可對文件進行讀和寫操作。
w+:消除文件內容,然後以讀寫方式打開文件。
a+:以讀寫方式打開文件,並把文件指針移到文件尾。

 

2.讀取文件

f.read([count])    讀出文件,如果有count,則讀出count個字節,如果不設count則讀取整個文件。
f.readline()    讀出一行信息。
f.readlines()    讀出所有行,也就是讀出整個文件的信息。

假設我們讀取的文件如下:

readline()讀取的數據爲str類型:

read()讀取數據爲str類型:

readlines()讀取數據爲list類型,而且會把換行符讀入:

 

3.如何把txt文件數據存入numpy數組

還是以上面文件做例子,首先通過read()將文件內容存爲str

file_path = ("D:/FDTD/test.txt")
with open(file_path,'r') as f:
    file = f.read()
print(file)
print(type(file))

然後對str進行分割,然後轉化爲numpy數組:

a = file.split()
print(a)
a = np.array(a)
a = a.reshape(3,5)
print(a)

結果如下:

 

4.一些常用操作

f.close()

關閉文件,記住用open()打開文件後一定要記得關閉它,否則會佔用系統的可打開文件句柄數。

f.fileno()

獲得文件描述符,是一個數字

f.flush()

刷新輸出緩存

f.isatty()

如果文件是一個交互終端,則返回True,否則返回False。

f.read([count])

讀出文件,如果有count,則讀出count個字節。

f.readline()

讀出一行信息。

f.readlines() 讀出所有行,也就是讀出整個文件的信息。
f.seek(offset[,where]) 把文件指針移動到相對於where的offset位置。where爲0表示文件開始處,這是默認值 ;1表示當前位置;2表示文件結尾。
f.tell() 獲得文件指針位置。

f.truncate([size])

截取文件,使文件的大小爲size。

f.write(string)

把string字符串寫入文件。

f.writelines(list)

把list中的字符串一行一行地寫入文件,是連續寫入文件,沒有換行。

 

5.批量讀取txt文件

我們使用os模塊中的listdir來列舉所有的txt文件:

file_path = ("D:/FDTD/t")
files= os.listdir(file_path)
for file in files:
    file_path2=file_path+ '/' + file
    with open(file_path2,"r") as f:

假如文件中都是n行5列數據,我們需要對其進行合併:

file_path = ("D:/FDTD/t")
files= os.listdir(file_path)
time = 0
for file in files:
    file_path2=file_path+ '/' + file
    with open(file_path2,"r") as f:
        t = f.read()    #讀取文件數據,此時爲文件內容爲字符串形式
        t = t.split()    #按空格或換行對字符串進行分割
        t = np.array(t)    #將list轉化爲numpy數組
        t = t.reshape(-1,5)    
        print('\n'+file_path2+':')
        print(t)    #打印一個文件的數據
        if time ==0:
            a = t    #如果是第一個文件,則令a=t
        else:    
            a = np.vstack((t,a))    #如果不是第一個文件,則將t與前面文件數據進行拼接
        time += 1
print('\n合併後:')
print(a)

輸出結果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章