摘要: Python對於檔案和流的操作與其他程式語言基本上差不多,甚至語句上比其他語言更為簡潔。檔案和流函數針對的物件除了這兩者之外還有,類別檔案(file-like),也就是python中只支援讀取卻不支援寫的流函數。本文介紹了python中常見的檔案和流的操作函數以及操作方式。
open(name[, mode[, buffering]]):其中name是檔案所在路徑,
Python中常用的檔案模式:
r: 唯讀模式
#w: 覆寫模式
a: 擴充模式
b: 二進位模式(通常與其他模式同時使用)
+: 增加模式(通常與其他模式同時使用)
其中,open函數模式的預設值為唯讀模式。 buffering函數可以為True或False,表示是否對檔案進行記憶體加速。
read([size]):從目前位置繼續讀取檔案內容,size參數為可選,指定了讀取的位元組數。預設為讀取文件中的所有內容。
readline([size]):讀取下一行文字。 size表示讀取改行的字元數量。 Python中可以透過readline一次讀取整行內容,readlines一次讀取全部內容。
write(string):寫入特徵字元到檔案
#注意:wirte方法會將原始檔案清空後再寫入現有腳本的數據。然而在同一個腳本中,持續呼叫write不會覆蓋先前語句所寫的內容,而是在先前寫入位置之後增添新內容。
Linux系統中,可以使用" $cat Infile | py_script
來源:百度網盤搜尋
"//其中somefile.txt含有文本 $ cat somefile.txt | python somescript.py # somescript.pyimport sys text = sys.stdin.read() words = text.split() wordcount = len(words)print 'Wordcount:', wordcount
Python中三種標準形式的流:sys.stdin, sys.stdout以及sys.stderr。中的位置,範例程式碼如下:
f = open(r'text\somefile.txt', 'w') f.write('01234567890123456789') f.seek(5) f.write('Hello, World!') f.close() f = open(r'text\somefile.txt')print f.read() 结果:01234Hello, World!89>>> f = open(r'text/somefile.txt')>>> f.read(3)'012'>>> f.tell()3L
關於close()方法,當檔案用於唯讀時,建議呼叫close()方法;當檔案使用於寫入時,則寫入完畢必須呼叫close()方法。可行的操作,且不用考慮檔案關閉的問題,舉例如下:
l = ["it is a gooday!", "Hello, world!", "Thanks"]with open(r'text/RWLines.txt', 'w') as f:for eachStr in l: f.write(eachStr + "\n")""" This is wrong because file is already closed after with clause: f.read(2) """
while True:char = f.read(1)if not char: break process(char) f.close()while True: line = f.readline()if not line: break process(line) f.close()
©
以上是Python進階之檔案與流的詳細內容。更多資訊請關注PHP中文網其他相關文章!