檔案的輸入輸出

2022-08-27 22:54:18 字數 2093 閱讀 5136

檔案的輸入輸出:

fileobj=open(filename,mode)

moded的第乙個子母表示對其的操作:

r 讀模式

w 寫模式,如果檔案不存在的話,則建立,如果存在則重新寫新內容

x 如果檔案不存在的情況下,新建立並寫檔案

a 如果檔案存在,則在末尾新增內容

mode的第二個字母表示的是檔案的型別

t 代表文字型別

b 代表二進位制檔案

使用write()寫文字檔案

>>> poem=''' there was a young lady named bright,

... whose speed was far faster than light

... in a relatived way

... '''

>>> len(poem)

95>>> fout=open('relativity','w')

>>> fout.write(poem)

>>>

>>> fout.close()

使用read(),readline(),或者readlines()讀文字檔案

讀取檔案的最簡單的方式就是使用乙個迭代器,它會每次返回一行,

>>> poem=''

>>> fin=open('relativity','r')

>>> for line in fin:

... poem+=line

...

>>> fin.close()

>>> len(poem)

95

函式readlines()呼叫時每次讀取一行,並返回單行字串列表『

>>> fin=open('relativity','r')

>>> lines=fin.readlines()

>>> fin.close()

>>> for line in lines:

... print line

...

there was a young lady named bright,

whose speed was far faster than light

in a relatived way

使用write()寫二進位制檔案

>>> bdata=bytes(range(0,256))

>>> len(bdata)

1170

>>> fout=open('bfile','wb')

>>> fout.write(bdata)

>>> fout.close()

使用with自動關閉檔案

python的上下文管理器會清理一些資源,例如開啟的檔案,它的形式為with expression as variable

>>> poem='aaa bbb ccc ddd'

>>> with open('relativity','wt') as fout:

... fout.write(poem)

...

完成上下文管理器的**後,檔案會自動關閉。

使用seek()改變位置

python都會跟蹤檔案的位置,函式tell()返回距離檔案開始處的位元組偏移量,函式seek()允許跳轉到檔案其他位元組偏移量的位置,

>>> fin=open('bfile','rb')

>>> fin.tell()

0>>> fin.seek(255)

>>> bdata=fin.read()

>>> len(bdata)

916>>> bdata[0]

'6'

seek()同樣返回當前的偏移量

用第二個引數呼叫函式seek(): seek(offset:origin)

如果origin等於0,預設為0,從開頭偏移offset個位元組

如果origin等於1,從當前位置偏移offset個位元組

如果origin等於2,距離最後結尾處偏移offset個位元組

檔案輸入 輸出

13.1 和檔案進行通訊 文字檢視和二進位制檢視 在文字檢視中,程式看到的內容和二進位制的內容可能不同,例如ms dos文字檔案用回車符和換行符的組合 r n來表示行尾,macintosh用乙個回車符 r來表示行尾。c程式使用乙個 n表示行尾。所以,如果c程式以文字檢視模式處理乙個ms dos文字檔...

檔案輸入輸出

檔案的兩種檢視 文字和二進位制。有的時候同乙個檔案以不同的檢視進行檢視,顯示是不同的,主要是控制字元 回車,換行 的不同。printf 是將各種型別轉換為適合的終端字元。所以打算將乙個結構體送入檔案的話不能用printf這一類函式。二進位制形式儲存,中間沒有從數字到字串形式的轉化。對於標準io,fr...

檔案輸入輸出

當我們求解acm題目時,通常在設計好演算法和程式後,要在除錯環境 例如vc等 中執行程式,輸入測試資料,當能得到正確執行結果後,才將程式提交到oj中。但由於除錯往往不能一次成功,每次執行時,都要重新輸入一遍測試資料,對於有大量輸入資料的題目,輸入資料需要花費大量時間。使用freopen函式可以解決測...