您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python中文件如何讀取和寫入,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
從文件中讀取數(shù)據(jù)
讀取整個文件
這里假設在當前目錄下有一個文件名為'pi_digits.txt'的文本文件,里面的數(shù)據(jù)如下:
3.1415926535
8979323846
2643383279
with open('pi_digits.txt') as f: # 默認模式為‘r',只讀模式 contents = f.read() # 讀取文件全部內(nèi)容 print contents # 輸出時在最后會多出一行(read()函數(shù)到達文件末會返回一個空字符,顯示出空字符就是一個空行) print '------------' print contents.rstrip() # rstrip()函數(shù)用于刪除字符串末的空白
3.1415926535
8979323846
2643383279
------------
3.1415926535
8979323846
2643383279
逐行讀取
可以通過循環(huán)來實現(xiàn)逐行讀取數(shù)據(jù):
with open('pi_digits.txt') as f: for line1 in f: print line1 # 每行末尾會有一個換行符 print '------------' for line2 in f: print line2.rstrip() # 此時文件已經(jīng)讀完,line2指向文本末尾,因此不會有輸出
3.1415926535
8979323846
2643383279
------------
讀取文件時相當于有一個指針在記錄讀取的位置,數(shù)據(jù)讀到哪,這個指針就指到哪邊,繼續(xù)讀取數(shù)據(jù)時會從該位置繼續(xù)讀取,因此上面代碼中第二個循環(huán)中輸出為空。將上述代碼稍加修改如下:
with open('pi_digits.txt') as f: for line1 in f: print line1 print '------------' with open('pi_digits.txt') as f: # 需要重新打開文本進行讀取 for line2 in f: print line2.rstrip() # 刪除字符串末尾的空白
3.1415926535
8979323846
2643383279
------------
3.1415926535
8979323846
2643383279
上述代碼相當于第一次讀取完后關(guān)閉該文件又重新打開進行讀取。逐行讀取數(shù)據(jù)也可以用readline()函數(shù),如下:
with open('pi_digits.txt') as f: # readline()每一次讀取一行數(shù)據(jù),并指向該行末尾 line1 = f.readline() # 讀取第一行數(shù)據(jù)(此時已經(jīng)指向第一行末尾) line2 = f.readline() # 從上一次讀取末尾開始讀取(第二行) print line1.rstrip() print line2.rstrip()
3.1415926535
8979323846
有時候我們想要一次性讀取全部數(shù)據(jù)并且按分開存儲以便于后續(xù)的操作,當然用上面的循環(huán)可以實現(xiàn),但python提供了更簡單的方法readlines():
with open('pi_digits.txt') as f: lines = f.readlines() # 讀取文本中所有內(nèi)容,并保存在一個列表中,列表中每一個元素對應一行數(shù)據(jù) print lines # 每一行數(shù)據(jù)都包含了換行符 print '------------' for line in lines: print line.rstrip() print '------------' pi_str = '' # 初始化為空字符 for line in lines: pi_str += line.rstrip() #字符串連接 print pi_str
['3.1415926535\n', '8979323846\n', '2643383279\n']
------------
3.1415926535
8979323846
2643383279
------------
3.141592653589793238462643383279
寫數(shù)據(jù)到文件
寫數(shù)據(jù)有幾種不同的模式,最常用的是w', ‘a(chǎn)', 分別表示擦除原有數(shù)據(jù)再寫入和將數(shù)據(jù)寫到原數(shù)據(jù)之后:
filename = 'write_data.txt' with open(filename,'w') as f: # 如果filename不存在會自動創(chuàng)建, 'w'表示寫數(shù)據(jù),寫之前會清空文件中的原有數(shù)據(jù)! f.write("I am Meringue.\n") f.write("I am now studying in NJTECH.\n")
此時會在當前路徑下創(chuàng)建一個'write_data.txt'的文本文件,并向文件中寫入數(shù)據(jù)如下:
I am Meringue.
I am now studying in NJTECH.
下面繼續(xù)在該文件中加入新數(shù)據(jù):
with open(filename,'a') as f: # 'a'表示append,即在原來文件內(nèi)容后繼續(xù)寫數(shù)據(jù)(不清楚原有數(shù)據(jù)) f.write("I major in Machine learning and Computer vision.\n")
此時的文件內(nèi)容為:
I am Meringue.
I am now studying in NJTECH.
I major in Machine learning and Computer vision.
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python中文件如何讀取和寫入”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。