前言 前面幾節枯燥的模塊終於結束了,想要完全掌握前幾節的模塊需要不斷的練習才行,畢竟眼過千遍不如手過一遍嘛。在一些項目需求里,要對文件進行IO操作,畢竟重要數據不可能列印到屏幕上而不去保存,Python對的文件IO操作並不是很複雜,相信你很快就能掌握它! 文件IO操作 對於一個文件的操作,無非不過創 ...
前言
前面幾節枯燥的模塊終於結束了,想要完全掌握前幾節的模塊需要不斷的練習才行,畢竟眼過千遍不如手過一遍嘛。在一些項目需求里,要對文件進行IO操作,畢竟重要數據不可能列印到屏幕上而不去保存,Python對的文件IO操作並不是很複雜,相信你很快就能掌握它!
文件IO操作
對於一個文件的操作,無非不過創建、刪除、讀、寫,創建和刪除在OS模塊裡面已經說過,那隻剩下讀和寫了,也就是IO(Input,Output)操作了。
接下來,將以徐志摩的《再別康橋》為例子,深入解讀Python中文件IO操作
輕輕的我走了, 正如我輕輕的來; 我輕輕的招手, 作別西天的雲彩。 ---- 那河畔的金柳, 是夕陽中的新娘; 波光里的艷影, 在我的心頭蕩漾。 ---- 軟泥上的青荇, 油油的在水底招搖; 在康河的柔波里, 我甘心做一條水草! ---- 那榆蔭下的一潭, 不是清泉,是天上虹; 揉碎在浮藻間, 沉澱著彩虹似的夢。 ---- 尋夢?撐一支長篙, 向青草更青處漫溯⑷; 滿載一船星輝, 在星輝斑斕里放歌。 ---- 但我不能放歌, 悄悄是別離的笙簫; 夏蟲也為我沉默, 沉默是今晚的康橋! ---- 悄悄的我走了, 正如我悄悄的來; 我揮一揮衣袖, 不帶走一片雲彩。
1. 打開文件
Python獲得文件句柄的方式與c及其類似,使用內置函數open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 「file表示文件名、mode表示打開方式(預設為讀)、buffering表示寄存區緩衝大小(負值為系統預設,0為沒有寄存區緩存,1為文件會寄存行,大於1的整數為寄存區緩存大小)、encoding表示文件編碼、newline表示換行符(預設為\n)」
f = open('再別康橋.txt') # 以預設讀的方式打開再別康橋,註意:文件路徑(此時程式和再別康橋在同一路徑) f = open('xxx.txt', 'w') # 以寫的方式打開文件,註意:如果此文件不存在,則創建這個文件;如果存在,則刪除原文件所有內容
對於不同的文件,有不同的處理方式,常用的mode參數如下:
模式 描述 r 讀 w 寫 r+ 讀寫 w+ 寫讀 a 追加 a+ 追加讀 rb 二進位讀 wb 二進位寫 rb+ 二進位讀寫 wb+ 二進位寫讀 ab 二進位追加 ab+ 二進位追加讀
這些模式看似複雜,其實內部規律很清晰,接下來將用文件的讀和寫來充分瞭解這些模式
2. 文件的讀
read() 「讀取文件指針之後的所有內容,並返回字元串」
這裡提到了一個新概念:文件指針,想象一下,你在讀書,你的手指頭指著你正在讀的地方,你沒讀一個字,你的手指頭就跟著向後動一下,你的手指頭就是文件指針,以上模式中,除了a、a+、ab+文件指針在文件末尾之外,其他的都是在文件開頭
In [2]: f = open('再別康橋.txt') # 預設讀的方式打開文件 In [3]: f.read() # 讀取文件指針之後的所有內容 Out[3]: '輕輕的我走了,\n正如我輕輕的來;\n我輕輕的招手,\n作別西天的雲彩。\n----\n那河畔的金柳,\n是夕陽中的新娘;\n波光里的艷影,\n在我的心頭蕩漾。\n----\n軟泥上的青荇,\n油油的在水底招搖;\n在康河的柔波里,\n我甘心做一條水草!\n----\n那榆蔭下的一潭,\n不是清泉,是天上虹;\n揉碎在浮藻間,\n沉澱著彩虹似的夢。\n----\n尋夢?撐一支長篙,\n向青草更青處漫溯;\n滿載一船星輝,\n在星輝斑斕里放歌。\n----\n但我不能放歌,\n悄悄是別離的笙簫;\n夏蟲也為我沉默,\n沉默是今晚的康橋!\n----\n悄悄的我走了,\n正如我悄悄的來;\n我揮一揮衣袖,\n不帶走一片雲彩。\n'
In [9]: f = open('再別康橋.txt', 'w') # 以寫的模式打開文件,此時這個文件的內容已經被刪除了