Python讀寫檔案

2021-10-04 01:31:46 字數 3192 閱讀 5433

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 只...