建立乙個測試檔案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 只...