1.打開文件 #方法1,這種方式使用后需要關(guān)閉文件 f = open("data.txt","r") f.close() #方法2,使用文件后自動關(guān)閉文件 with open('data.txt',"r") as f: 打開文件的模式主要有,r、w、a、r 、w 、a r:以讀方式打開文件,可讀取文件信息。 w:以寫方式打開文件,可向文件寫入信息。如文件存在,則清空該文件,再寫入新內(nèi)容 a:以追加模式打開文件(即一打開文件,文件指針自動移到文件末尾),如果文件不存在則創(chuàng)建 r :以讀寫方式打開文件,可對文件進行讀和寫操作。 w :消除文件內(nèi)容,然后以讀寫方式打開文件。 a :以讀寫方式打開文件,并把文件指針移到文件尾。 2.讀取文件 f.read([count]) 讀出文件,如果有count,則讀出count個字節(jié),如果不設(shè)count則讀取整個文件。 f.readline() 讀出一行信息。 f.readlines() 讀出所有行,也就是讀出整個文件的信息。 假設(shè)我們讀取的文件如下: readline()讀取的數(shù)據(jù)為str類型: read()讀取數(shù)據(jù)為str類型: readlines()讀取數(shù)據(jù)為list類型,而且會把換行符讀入:
3.如何把txt文件數(shù)據(jù)存入numpy數(shù)組 還是以上面文件做例子,首先通過read()將文件內(nèi)容存為str file_path = ("D:/FDTD/test.txt") with open(file_path,'r') as f: file = f.read() print(file) print(type(file)) 然后對str進行分割,然后轉(zhuǎn)化為numpy數(shù)組: a = file.split() print(a) a = np.array(a) a = a.reshape(3,5) print(a) 結(jié)果如下: 4.一些常用操作 f.close() 關(guān)閉文件,記住用open()打開文件后一定要記得關(guān)閉它,否則會占用系統(tǒng)的可打開文件句柄數(shù)。 f.fileno() 獲得文件描述符,是一個數(shù)字 f.flush() 刷新輸出緩存 f.isatty() 如果文件是一個交互終端,則返回True,否則返回False。 f.read([count]) 讀出文件,如果有count,則讀出count個字節(jié)。 f.readline()鄭州婦科醫(yī)院哪家好 http://m.120ask.com/zhenshi/ 讀出一行信息。 f.readlines() 讀出所有行,也就是讀出整個文件的信息。 f.seek(offset[,where]) 把文件指針移動到相對于where的offset位置。where為0表示文件開始處,這是默認值 ;1表示當(dāng)前位置;2表示文件結(jié)尾。 f.tell() 獲得文件指針位置。 f.truncate([size]) 截取文件,使文件的大小為size。 f.write(string) 把string字符串寫入文件。 f.writelines(list) 把list中的字符串一行一行地寫入文件,是連續(xù)寫入文件,沒有換行。 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列數(shù)據(jù),我們需要對其進行合并: 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() #讀取文件數(shù)據(jù),此時為文件內(nèi)容為字符串形式 t = t.split() #按空格或換行對字符串進行分割 t = np.array(t) #將list轉(zhuǎn)化為numpy數(shù)組 t = t.reshape(-1,5) print('\n' file_path2 ':') print(t) #打印一個文件的數(shù)據(jù) if time ==0: a = t #如果是第一個文件,則令a=t else: a = np.vstack((t,a)) #如果不是第一個文件,則將t與前面文件數(shù)據(jù)進行拼接 time = 1 print('\n合并后:') print(a) 得出結(jié)果 |
|