open
()
函式用於建立檔案物件,最常使用兩個引數: flename, mode
open
(filename, mode)
f =open
('workfile'
,'w'
)#以寫模式開啟workfile檔案
mode 為 『r』 表示唯讀, 『w』 表示只寫,如果檔案已存在會被清空, 『a』 表示追加寫, 資料被寫到檔案尾部. 『r+』 表示可讀可寫.,mode 引數如果不提供將會預設為 『r』。
預設情況下,檔案以文字的模式被開啟,客戶端與檔案的互動,無論是讀還是寫都是基於特定編碼的字串完成的,編碼可作為額外引數提供,預設編碼取決與作業系統。通過在mode引數中使用』b』識別符號,表示以二進位制模式開啟檔案,該模式下與檔案的互動,無論讀還是寫,資料都是以位元組物件形式完成的。
文字模式下,預設情況下換行符有統一的處理邏輯:讀取檔案資料時,平台特定的換行符(\n - unix, \r\n - windows)會被統一轉換為』\n』,反之,寫資料到檔案時,所有』\n』又會被自動轉換為平台特定的換行符後再寫入檔案。對於非文字檔案比如如可執行檔案和,這套邏輯可能會導致資料損壞。
涉及到檔案物件處理時,一般和with一起使用,使得即使檔案使用中途出現異常,在使用後都會自動關閉,而不用顯式的try_finally。
>>
>
with
open
('workfile'
)as f:..
. read_data = f.read(
)>>
> f.closed
true
f.read(
[size]
)
size位元組被讀取,返回相應長度的字串(文字模式)或位元組物件(二進位制模式),檔案讀完返回空字串。size被省略或者是負數,則整個檔案被讀取。
>>
> f.read(
)'this is the entire file.\n'
>>
> f.read(
)''
f.readline(
)
讀取一行,新行字元』\n』會被保留於行尾部,唯一可能沒有『\n』的情況是沒有以新行結尾的檔案中的最後一行。如果返回』\n』則表示讀取了空行,如果返回』'則表示讀到了檔案結尾。
>>
> f.readline(
)'this is the first line of the file.\n'
>>
> f.readline(
)'second line of the file\n'
>>
> f.readline(
)''
f.write(string)
寫字串到檔案中,返回寫入的字元數。如果為非string型別的資料,則需要在寫入前轉換為string。
>>
> value =
('the answer',42
)>>
> s =
str(value)
# convert the tuple to string
>>
> f.write(s)
18
f.tell(
)
以整數返回當前檔案物件中訪問的位置,如果是二進位制模式,則是從檔案開頭起算起的位元組數,如果是文字模式,則是字元數。
f.seek(offset,
[base_on]
)
改變檔案物件中訪問的位置,在base_on參考點的位置上實現偏移offset, base_on可選,預設為0, 表示檔案的開頭,1表示當前的位置,2表示檔案的結尾,通過f.seek()可以實現隨機讀寫。
>>
> f =
open
('workfile'
,'rb+'
)>>
> f.write(b'0123456789abcdef')16
>>
> f.seek(5)
# go to the 6th byte in the file
5>>
> f.read(1)
b'5'
>>
> f.seek(-3
,2)# go to the 3rd byte before the end
13>>
> f.read(1)
b'd'
文字檔案(沒有b模式開啟的檔案) 只支援從檔案開頭seek,同時offset必須是f.tell()的返回值或0.
通過for,記憶體高效,快速,簡潔的按行讀取檔案
>>
>
for line in f:..
.print
(line, end='')
...this is the first line of the file
.second line of the file
list
(f)f.redlines(
)
把檔案的每一行放於list中
json模組提供了json格式的資料交換能力,可以直接保持字典和列表。json模組的部分api和pickle類似。
>>
>
import json
>>
> json.dumps([1
,'******'
,'list'])
'[1, "******", "list"]'
json.dump(x, f)
pickle.dump(x, f)
x = json.load(f)
pickle模組提供了python私有的序列化協議支援,可以支援任意型別python資料的序列化。
pickle.dump(x, f)
x = pickle.load(f)
Python檔案讀寫
今天在看python檔案讀寫操作,發現python file name mode buffering file 函式用於建立乙個file物件,它有乙個別名叫open 可能更形象一些,它們是內建函式。來看看它的引數。它引數都是以字串的形式傳遞的。name是檔案的名字。mode 是開啟的模式,可選的值為...
python檔案讀寫
檔案讀寫模式 模式 描述 r以讀方式開啟檔案,可讀取檔案資訊。w以寫方式開啟檔案,可向檔案寫入資訊。如檔案存在,則清空該檔案,再寫入新內容 a以追加模式開啟檔案 即一開啟檔案,檔案指標自動移到檔案末尾 如果檔案不存在則建立 r 以讀寫方式開啟檔案,可對檔案進行讀和寫操作。w 消除檔案內容,然後以讀寫...
python 讀寫檔案
python讀寫檔案在文字不大的情況可以用正常的 open 然後讀入 readline行讀入 或者整體讀入 read readlines 基本知識 file open path,r 說明 第乙個引數是檔名稱,包括路徑 第二個引數是開啟的模式mode r 唯讀 預設。如果檔案不存在,則丟擲錯誤 w 只...