Python 檔案讀寫

2021-10-02 10:29:18 字數 4778 閱讀 3909

建立乙個測試檔案test.txt,內容如下:

3.1415926535

897932384

2643383279

讀取該檔案中的所有內容:

with

open

('test.txt'

)as file_object:

contents = file_object.read(

)print

(contents)

open(): 開啟檔案。要以任何方式使用檔案,都要先開啟檔案,才能訪問它。函式open()接收乙個引數:要開啟的檔案的名稱,返回乙個表示檔案的物件。

關鍵字with在不再需要訪問檔案後將其關閉;read()函式讀取檔案的全部內容,並將其作為乙個長長的字串儲存在變數contents中。

注意:執行結果多出乙個空行。這是因為read()到達檔案末尾時返回乙個空字串,而將這個空字串顯示出來就是乙個空行。要刪除末尾的空行,可在print語句中使用rstrip()。

要讓python開啟不與程式檔案位於同乙個目錄中的檔案,需要提供檔案路徑,它讓python到系統的特定位置去查詢。

可以使用相對檔案路徑來開啟資料夾中的檔案。相對檔案路徑讓python到指定的位置去查詢,而該位置是相對於當前執行的程式所在目錄的。

注意:在windows系統中,在檔案路徑中使用反斜槓(\)而不是斜槓(/)。

除此之外,還可以使用絕對檔案路徑

要以每次一行的方式檢查檔案,可對檔案物件使用for迴圈。

filename =

"test.txt"

with

open

(filename)

as file_object:

for line in file_object:

print

(line.rstrip(

))

使用關鍵字with時,open()返回的檔案物件只在with**塊內使用。如果要在with**塊外訪問檔案的內容,可在with**塊內將檔案的各行儲存在乙個列表中,並在with**塊外使用該列表。

with

open

(filename)

as file_object:

lines = file_object.readlines(

)for line in lines:

print

(line.rstrip(

))

with

open

(filename)

as file_object:

lines = file_object.readlines(

)str=""

for line in lines:

str+= line.strip(

)print

(str

)print

(len

(str))

3.14159265358979323842643383279

31

要刪除字串左右兩端的空格,可以使用strip()。

filename =

"demo.txt"

with

open

(filename,

'w')

as file_object:

file_object.write(

"i love you."

)

呼叫open()函式,需要提供兩個引數,第乙個引數是要開啟的檔案的名稱,第二個引數是要告訴python要以寫入模式開啟這個檔案。

開啟檔案的時候,可以指定讀取模式(『r』)、寫入模式(『w』)和附加模式(『a』),或者以能夠讀取和寫入檔案的模式(『r+』)。如果省略了模式引數,python將以預設的唯讀模式開啟檔案。

如果要寫入的檔案不存在,則函式open()將自動建立它。如果以寫入模式開啟檔案,如果指定的檔案已經存在,則python將在返回檔案物件前清空該檔案。

函式write()不會在寫入的文字末尾新增換行符。要讓每個字串都單獨佔一行,需要在write()語句中包含換行符。

filename =

"demo.txt"

with

open

(filename,

'w')

as file_object:

file_object.write(

"i love you.\n"

) file_object.write(

"this is a demo.\n"

)

在附加模式開啟檔案時,python不會在返回檔案物件前清空檔案,而寫入到檔案的行都將新增到檔案末尾。如果指定的檔案不存在,python將建立乙個空檔案。

filename =

"demo.txt"

with

open

(filename,

'a')

as file_object:

file_object.write(

"i love you too.\n"

) file_object.write(

"this is a demo hahahaha.\n"

)

模組json能夠將簡單的python資料結構轉儲到檔案中,並在程式再次執行時載入該檔案中的資料。

使用json.dump()來儲存資料:接收兩個引數,即要儲存的資料以及可用於儲存資料的檔案物件。

import json

numbers =[2

,3,4

,5,6

,7]file

="demo.json"

with

open

(file

,'w'

)as file_object:

json.dump(numbers,file_object)

使用json.load()將檔案內容讀取到記憶體中:

with

open

(file

)as f_object:

numbers = json.load(f_object)

print

(numbers)

import json

username =

input

("what is your name?"

)filename =

"username.json"

with

open

(filename,

'w')

as f_obj:

json.dump(username,f_obj)

print

("we'll remember you when you come back, "

+ username+

" !"

)with

open

(filename)

as f_obj:

username = json.load(f_obj)

print

("welcome back, "

+username+

" !"

)

將**劃分為一系列完成具體工作的函式,即為重構。重構讓**更清晰,更易於理解,更容易擴充套件。

import json

defget_stored_username()

: filename =

'username.json'

try:

with

open

(filename)

as f_obj:

username = json.load(f_obj)

except filenotfounderror:

return

none

else

:return username

defget_new_username()

:"""提示使用者輸入使用者名稱"""

username =

input

("what is your name?"

)file

='username.json'

with

open

(file

,'w'

)as f_obj:

json.dump(username, f_obj)

return username

defgreet_user()

:"""問候使用者"""

username = get_stored_username(

)if username:

print

("welcome back, "

+ username +

" !"

)else

: username = get_new_username(

)print

("we'll remember you when you come back, "

+ username +

" !"

)greet_user(

)

《python程式設計從入門到實踐》

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