open 函式用來開啟檔案,語法如下:
open
(name[
, mode[
, buffering]
])
其中:
假如現在有乙個名為 new.txt 文字,位置在g:\text 下,那麼可以這樣去開啟這個檔案:
f =
open
(r'g:\text\new.txt '
)
如果該目錄下沒有這個檔案,則會報錯:
>>
>
open
(r'g:\text\new.txt'
)traceback (most recent call last)
: file ""
, line 1,in
filenotfounderror:
[errno 2
] no such file
or directory:
'g:\\text\\new.txt'
如果開啟正確,則會返回乙個檔案物件:
>>
>
open
(r'g:\text\new.txt'
)'g:\\text\\new.txt' mode=
'r' encoding=
'cp936'
>
為什麼會有檔案模式呢?
當open函式只有乙個檔名引數時,我們可獲得乙個檔案物件,但是如果我們要向檔案寫入內容,就得提供乙個模式引數先給出引數**:
引數作用
rread 讀模式
wwrite 寫模式
aadd 追加模式
bbyte 使用二進位制模式開啟(b可以新增到其他模式中使用)
+表明讀寫都是允許的(可以參與到任何模式中)
為啥有二進位制?當傳入0或者false時,輸入和輸出是無緩衝的,也就是指所有的讀寫操作都是直接針對硬碟使用二進位制來讀寫檔案,與使用文字模式不會有很大的差別。但是在使用二進位制模式時,python會原樣給出檔案中的內容,而文字模式下不一定。
例如要開啟音訊和影象的時候,就應該在開啟模式中加入b,例如「rb」可以用來讀取乙個二進位制檔案
如果傳入1或者true,i/o就是有緩衝的,有緩衝是指python使用記憶體替代了硬碟,這樣程式會更快
如果是大於1的數字,則代表緩衝區的大小(以位元組為單位)
如果是-1,則代表是預設的緩衝區大小
如果有乙個名為 f 的類檔案物件,可以使用 f.write 和 f.read 對檔案進行讀寫。read()函式可以帶有引數,作用是告訴流要讀取多少位元組。下面用乙個例子來說明:
函式作用
f.readline()
讀取單獨的一行(一直讀到換行符的出現,同時也讀取這個換行符)
f.readlines()
讀取乙個檔案中所有行並將其作為列表返回
f.writelines()
傳給這個函式乙個字串的列表,或者是可迭代的物件,函式會把所有的字串寫入檔案。但是注意程式不會新增行
此外注意:沒有writeline方法
通常來說,檔案物件會在退出程式之後會自動關閉,但關閉檔案可以避免在某些作業系統或者設定中進行無用的修改,也會避免系統中開啟了很多的檔案消耗大量資源(這是因為python出於效率的考慮而把資料臨時存在某個地方,這些資料可能正處在快取中,如果程式崩潰了,資料就不會被寫入檔案)。為了安全起見,要在使用完檔案後關閉。
如果為了確保檔案關閉,可以使用try/finally語句,舉例如下:
try
:#對檔案的操作
finally
:file
.close(
)
在python 2.5之後,引入了乙個新的語句,即with語句:
with
open
("new.txt"
)as f:
#檔案操作
檔案在語句結束後會被自動關閉。
python可是大名鼎鼎的python,不來點niubility的操作那還叫python嗎?
python中,檔案物件是可迭代的,意味著可以直接在for迴圈中使用檔案物件,從而進行迭代檔案的內容。下面兩個demo都是行得通的:
f =
open
(filename)
for line in f:
#檔案操作
f.close(
)
for line in
open
(filename)
:#檔案操作
vue完整版和非完整版的區別和使用
官網最全 兩個版本對應的檔名 完整版 vue.js 內含compiler,編譯器可以把試圖上的html轉成dom節點,轉成html中的內容,所以體積大,不建議用,是從html獲得檢視。非完整版 vue.runtime.js template 和 render 怎麼用 templete是檢視的內容,可...
python歌詞直譯器 完整版
歌曲儲存到與 相同的資料夾即可import pygame,os defwelcome print def select print 5.增大音量 6.減少音量 7.顯示歌單 0.退出 return input 請選擇您要操作的選項 def action allmusic name pygame.mi...
c語言讀取bmp檔案完整版
include include 定義word為兩個位元組的型別 typedef unsigned short word 定義dword為四個位元組的型別 typedef unsigned long dword 位 件頭主要是對位 件的一些描述 位圖資訊頭主要是對位圖影象方面資訊的描述 位圖標準資訊 ...