Python進階之檔案與流

巴扎黑
發布: 2017-06-23 15:10:42
原創
1418 人瀏覽過

摘要: Python對於檔案和流的操作與其他程式語言基本上差不多,甚至語句上比其他語言更為簡潔。檔案和流函數針對的物件除了這兩者之外還有,類別檔案(file-like),也就是python中只支援讀取卻不支援寫的流函數。本文介紹了python中常見的檔案和流的操作函數以及操作方式。

Python中最基本的流函數:open

open(name[, mode[, buffering]]):其中name是檔案所在路徑,

Python中常用的檔案模式:

  • r: 唯讀模式

  • #w: 覆寫模式

  • a: 擴充模式

  • b: 二進位模式(通常與其他模式同時使用)

  • +: 增加模式(通常與其他模式同時使用)

其中,open函數模式的預設值為唯讀模式。 buffering函數可以為True或False,表示是否對檔案進行記憶體加速。

Python最基本的讀寫函數:read和write及其相關內容

  • 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)
"""
登入後複製

另外,呼叫flush方法則會清空目前I/O流中的快取資訊。常用方式:

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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板