python檔案操作的一般步驟是:開啟檔案,讀取檔案/寫入檔案,關閉檔案三部分
python的開啟檔案操作:
open('filename')使用open函式,open函式可以接受兩個引數,第乙個引數是檔案的路徑,第二個引數是檔案開啟的模式。預設為唯讀模式開啟檔案。使用with即使發生錯誤可以關閉檔案。with open('filename') as f:
pass
下面列出檔案物件的訪問的模式:
檔案模式 操作r 以唯讀方式開啟
ru 或 ua 以讀方式開啟, 同時提供通用換行符支援 (pep 278)
w 以寫方式開啟 (必要時清空)
a 以追加模式開啟 (從 eof 開始, 必要時建立新檔案)
r+ 以讀寫模式開啟
w+ 以讀寫模式開啟 (參見 w )
a+ 以讀寫模式開啟 (參見 a )
rb 以二進位制讀模式開啟
wb 以二進位制寫模式開啟 (參見 w )
ab 以二進位制追加模式開啟 (參見 a )
rb+ 以二進位制讀寫模式開啟 (參見 r+ )
wb+ 以二進位制讀寫模式開啟 (參見 w+ )
ab+ 以二進位制讀寫模式開啟 (參見 a+ )
x 如果檔案存在報錯,不存在則建立
***加b模式開啟,不可以在指定encoding,切寫入時也需要轉換為位元組寫入檔案
下面是一些開啟檔案的例子:檔案的關閉操作:f = open('/etc/motd') # 以讀方式開啟
f = open('test', 'w') # 以寫方式開啟
f = open('data', 'r+') # 以讀寫方式開啟
f = open('io.sys', 'rb') # 以二進位制讀模式開啟
bytes 字串轉換位元組型別
n=bytes(李傑,encoding='utf-8')[轉換的字元,可以是變數,轉換後的編碼]
位元組轉換為字串
str(bytes(李傑,encoding='utf-8'),encoding='utf-8)
python的關閉操作很簡單,是用的是close()函式
python的讀取操作:
read([size])方法用來直接讀取位元組到字串中, 最多讀取給定數目個位元組. 如果沒有給定 size引數(預設值為 -1)或者 size 值為負, 檔案將被讀取直至末尾.python的寫操作:readline([size])方法用來讀一行,如果定義了size,有可能返回的只是一行的一部分.每次一行,迴圈讀取,直到檔案末尾
readlines([size])把檔案每一行作為乙個list的乙個成員,並返回這個list。其實它的內部是通過迴圈呼叫readline()來實現的。 如果提供size引數,size是表示讀取內容的總長,也就是說可能唯讀到檔案的一部分。
write()內建方法功能與 read() 和 readline() 相反. 它把含有文字資料或二進位制資料塊的字串寫入到檔案中去.python的檔案內移動:writelines(list):把list的內容全部寫到檔案中(多行一次性寫入)。這個函式也只是忠實地寫入,不會在每行後面加上任何東西。
seek()方法(類似 c 中的 fseek() 函式)可以在檔案中移動檔案指標到不同的位置. offset位元組代表相對於某個位置偏移量. 位置的預設值為 0 , 代表從檔案開頭算起(即絕對偏移量), 1 代表從當前位置算起, 2 代表從檔案末尾算起. 如果你是乙個 c 程式設計師,並且使用過了 fseek() , 那麼,0, 1, 2 分別對應著常量 seek_set, seek_cur, 以及 seek_end. 當人們開啟檔案進行讀寫操作的時候就會接觸到 seek()方法。
python高階讀取檔案 Python讀取檔案內容
開啟檔案之後,就可以讀取檔案的內容,檔案物件提供多種讀取檔案內容的方法。開啟test.txt檔案 f open test.txt r 開啟test.txt檔案 f.close 關閉檔案 test.txt檔案有以下內容 hello world.hello python.hello imooc.讀取若干...
Python檔案讀取
python提供了多種方法實現檔案讀取操作 1 read 2 readline 3 readlines 4 xreadlines 很多人也在糾結到底應該選擇哪種方式,甚至疑問在處理大檔案時應該選擇哪種方式,因為擔心檔案過大導致記憶體佔用率過高甚至無法完全載入。其實,這個問題是多餘的,在引入了迭代器和...
python檔案讀取
1.讀取txt檔案 read 讀取整行檔案 readline 讀取一行資料 readines 讀取所有行的資料 讀取txt檔案 user file open user info.txt r lines user file.readlines forline inlines username line...