


Python培訓
達內IT學院
400-111-8989

文件操作對編程語言的重要性不用多說,如果數據不能持久保存,信息技術也就失去了意義。按照本人經驗,IO也是蠻頭疼的一件事,因為不會用得太多,所以總是記不住API,每次都要重新google就會打斷思路,還不一定每次都快速得到正確的文章。
文件的讀操作
示例:
print("->文件句柄的獲取,讀操作:") f = open('無題','r',encoding='utf8') d = f.read() f.close() print(d) print('->例二:') f = open('無題','r',encoding='utf8') e = f.read(9) f.close() print(e) #python3中,文件中一個中英文都占位1
運行結果:
->文件句柄的獲取,讀操作:
昨夜星辰昨夜風
畫樓西畔桂堂東
身無彩鳳雙飛翼
心有靈犀一點通
>例二:
昨夜星辰昨夜風
畫
文件的寫操作
知識點:
1. 寫操作前,文件先格式化清空文件
2.清空操作,在執行open的w方法后,清空
print("寫的操作,寫文件的時候,不能調用讀方法,讀文件的時候,不能調用寫方法") f = open('python','w',encoding='utf8') f.write("I must learn python \nbecause, python is important \n") f.write("java is better?") f.write("maybe") #上面的語句,沒有加換行符,所以輸出的內容是緊接的 f.close()
運行結果:
打開文件后顯示如下:
1 I must learn python because, python is important java is better?maybe
文件的append方法
語法格式:
f = open('文件名','a','encoding = utf8')
文件這種方法為追加模式:1, 空白文件中,直接從頭開始寫入內容; 2 有內容的文件,會在末尾開始繼續寫入內容
示例:
f = open('python','a',encoding='utf8') f.write("花開又花落") f.close()
運行結果:
I must learn python because, python is important java is better?maybe花開又花落
readline 和 readlines
readline是逐行讀取
readlines是全文讀取
示例:
print("readline方法") f = open('無題','r',encoding='utf8') a = f.readline() print("此時光標位置:",f.tell()) b = f.readline() print("此時光標位置:",f.tell()) print(a.strip()) #strip是字符串方法中去除空格和換行的方法 print(b.strip()) print("readlines方法,會將每行的內容組成一個列表打印") f = open('無題','r',encoding='utf8') c = f.readlines() print(c) print(id(c)) print(id(f)) for i in c: print(i.strip()) print("遍歷方法") f.seek(0) for i in f: print(i.strip()) f.close() #文件的操作中,close()方法一定不能忘記
運行結果:
readline方法
此時光標位置: 23
此時光標位置: 46
昨夜星辰昨夜風
畫樓西畔桂堂東
readlines方法,會將每行的內容組成一個列表打印
['昨夜星辰昨夜風\n', '畫樓西畔桂堂東\n', '身無彩鳳雙飛翼\n', '心有靈犀一點通']
37826824
5344280
昨夜星辰昨夜風
畫樓西畔桂堂東
身無彩鳳雙飛翼
心有靈犀一點通
遍歷方法
昨夜星辰昨夜風
畫樓西畔桂堂東
身無彩鳳雙飛翼
心有靈犀一點通
文件的tell() 和 seek()方法
示例:
f = open('無題','r',encoding='utf8') f.read(4) print('當前光標位置',f.tell()) f.seek(10) print('當前光標位置',f.tell()) f.close() #read時,一個中文算三個字符
運行結果:
當前光標位置 12
當前光標位置 10
文件操作之flush方法
mport sys,time for i in range(20): sys.stdout.write("#") sys.stdout.flush() time.sleep(1) truncate方法 f = open('test','w') f.write("hello") f.write("\n") f.write("python") f.flush() #這樣不用執行close方法,內存中的數據,就會寫入到disk f.close() f = open('test','a') f.truncate(2) #截斷方法,光標從2開始往后截取 f.close()
其他的文件方法: r+ 讀寫方法
基于字符read & write
最基本的文件操作當然就是在文件中讀寫數據。這也是很容易掌握的。現在打開一個文件以進行寫操作:
fileHandle = open ( 'test.txt', 'w' )
‘w'是指文件將被寫入數據,語句的其它部分很好理解。下一步就是將數據寫入文件:
fileHandle.write ( 'This is a test.\nReally, it is.' )
這個語句將“This is a test.”寫入文件的第一行,“Really, it is.”寫入文件的第二行。最后,我們需要做清理工作,并且關閉文件:
fileHandle.close()
正如你所見,在Python的面向對象機制下,這確實非常簡單。需要注意的是,當你再次使用“w”方式在文件中寫數據,所有原來的內容都會被刪除。如果想保留原來的內容,可以使用“a”方式在文件中結尾附加數據:
fileHandle = open ( 'test.txt', 'a' ) fileHandle.write ( '\n\nBottom line.' ) fileHandle.close()
然后,我們讀取test.txt,并將內容顯示出來:
fileHandle = open ( 'test.txt' ) print fileHandle.read() fileHandle.close()
以上語句將讀取整個文件并顯示其中的數據。
基于行的讀寫 line
3fileHandle = open ( 'test.txt' ) print fileHandle.readline() # "This is a test." fileHandle.close()
同時,也可以將文件內容保存到一個list中:
fileHandle = open ( 'test.txt' ) fileList = fileHandle.readlines() for fileLine in fileList: print '>>', fileLine fileHandle.close()
或者在文件中一次讀取幾個字節的內容:
fileHandle = open ( 'test.txt' ) print fileHandle.read ( 1 ) # "T" fileHandle.seek ( 4 ) print FileHandle.read ( 1 ) # " "(原文有錯)
本文內容轉載自網絡,本著分享與傳播的原則,版權歸原作者所有,如有侵權請聯系我們進行刪除!
填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!