對檔案操作首先需要找的檔案的路徑,os.path模組可以很好地對路徑進行操作問題。
結構資料
變數讀寫
讀寫檔案有3個步驟:
呼叫open()
函式開啟檔案,返回file
物件;
呼叫file
物件的read()
或write()
方法讀或寫檔案;
呼叫file
物件的close()
方法,關閉檔案。
向open()
函式傳入乙個路徑,表示需要開啟的檔案,既可以是相對路徑,又可以是絕對路徑,返回file
物件,如
file
=open
('test.txt'
)# 這裡用的是相對路徑
這個命令將以讀模式開啟檔案,也即只允許從檔案中讀取資料,而不能寫入或修改。如果需要寫入檔案,則需要傳入第2個引數w
或a
,表示寫模式或新增模式,兩者區別將在下文敘述,如
file
=open
('test.txt'
,'w'
)
第2個引數可以是r
表示唯讀,與預設情況相同。r+
表示既可讀又可寫。
獲取了file
物件後,可利用read()
方法讀取檔案內容,如
file
.read(size)
該方法將讀取size
大小的文字,形成乙個大的字串。如果size
省略或為負,則讀取整個文字。如果已經讀到了檔案末尾,則返回空字串。
如果需要讀取文字中的一行則需要使用readline()
方法。readlines()
方法可以讀取所有的行,list(file)
也可以完成。
file
.readline(
)file
.readlines(
)list
(file
)
讀取內容時會自動獲取文字最後的換行符\n
。
檔案在讀取過程中有乙個指標,表示讀取的位置,可用tell()
方法獲取。
file
.tell(
)
使用seek()
方法可以讓指標到達指定位置,
file
.seek(offset, whence)
whence
為0(預設)表示檔案開頭,1表示當前位置,2表示末尾。offset
表示相對偏移量。
如需寫入檔案,建立檔案物件時要傳入引數w
,表示從頭開始寫檔案,這將覆蓋檔案中原有內容。如果傳入a
,則表示在文字最後新增文字,可理解為向列表末尾新增新內容。在這兩種情況下,如果檔名不存在,則會建立新的空檔案。
open
('test.txt'
,'w'
)file
.write(
'hello world\n'
)open
('test.txt'
,'a'
)file
.write(
'hello'
+str(2
))
write()
方法需要自行新增換行符\n
。寫入整數時要顯示地將其轉為字串。
close
方法用於關閉檔案,如
file
.close(
)
如果不使用這條語句關閉檔案,可能會導致有些內容沒有寫入到檔案中。在開啟檔案時可能會出現異常,可用
try-except
語句處理,詳細可戳此鏈結。但為了簡便可用with
語句開啟檔案,如
with
open
('test.txt'
)as f:
f.read(
)
with
語句後可進行檔案操作,它可自動呼叫finally
語句。
更詳細的檔案讀寫可參考文件。
如果需要讀取字典這樣的結構資料,可以採用json格式,這需要借助json
模組。
import json
dumps()
方法可以檢視json字串表示方法的結果。
x =[1
,'******'
,'list'
]json.dumps(x)
# '[1, "******", "list"]'
乙個類似的方法是dump()
,它可以寫入檔案。
json.dump(x, f)
如果需要從檔案中讀取則使用load()
方法。
x = json.load(f)
利用shelve
模組可以將變數儲存到二進位制shelf檔案中,也可以從硬碟中恢復變數。如
import shelve
shelf = shelve.
open
('data'
)l =
['a'
,'b'
,'c'
]shelf[
'l']
= lshelf.close(
)
上面這段**完成了變數儲存。如果要讀取資料
shelf = shelve.
open
('data'
)shelf[
'l']
shelf.close(
)
這裡開啟檔案不必指定讀或寫,因為開啟之後既能讀又能寫。
從上面**可以看出,shelf
檔案類似於字典,因此它可以使用keys()
和values()
方法,如
list
(shelf.keys())
list
(shelf.values(
))
這兩個方法可戳此鏈結檢視。
更詳細的內容可以檢視文件。
python檔案讀寫和整理
在windows上面,路徑的書寫使用反斜槓作為資料夾之間的分隔符 在os x或者linux上則是是用正斜槓。python上對檔案進行操作要使用到os這個模組。1.os模組和os.path模組的相關方法。使用os.path.join 函式,通過給它傳遞各資料夾的名字,會返回乙個檔案路徑的字串,並根據使...
python檔案讀寫和異常
1,文字檔案 2,二進位制檔案 print type data with open 吉多.jpg wb as fs2 fs2.write data except filenotfounderror as e print 指定的檔案無法開啟.except ioerror as e print 讀寫檔案...
Python檔案讀寫
今天在看python檔案讀寫操作,發現python file name mode buffering file 函式用於建立乙個file物件,它有乙個別名叫open 可能更形象一些,它們是內建函式。來看看它的引數。它引數都是以字串的形式傳遞的。name是檔案的名字。mode 是開啟的模式,可選的值為...