目錄
python檔案物件的基本操作
開啟與關閉檔案
open()函式的引數
file
mode
encoding
二進位制檔案
檔案的讀寫方法
假檔案讀寫操作
上下文管理
os模組
開啟檔案:使用open()方法開啟檔案,並返回檔案物件,在對檔案處理的過程中都需要這個函式的返回的物件。為了方便使用開啟的這個檔案物件,一般將這個物件賦值給乙個變數f = open()
關閉檔案:在每一次使用open()方法開啟檔案之後,都需要關閉開啟的檔案。關閉的方法,使用檔案的close()方法。
open(file, mode='r', buffering=none, encoding=none, errors=none, newline=none, closefd=true)
常用引數說明
指定開啟檔名及路徑,可以是相對路徑,也可以是絕對路徑。相對路徑就是當前工作的目錄。
指定檔案的開啟模式,不同的模式決定了對檔案不同操作形式。
三種基本模式:
其他模式:
規則:
指定讀寫檔案時使用的字元編譯碼方式。
呼叫open函式時,如果傳入了encoding引數值:使用write寫入內容到檔案時,寫入的內容會使用ope()函式中指定的encoding編碼寫入內容;呼叫read從檔案中讀取內容時,使用指定的encoding解碼讀取檔案內容。如果呼叫的時候沒有傳入encoding引數值,open函式使用系統預設的編碼方式,如中文windows系統中使用cp936(即gbk編碼)。
所以在對檔案讀寫時,可在上面三種模式的後面新增b,在開啟和建立檔案時以二進位制讀寫。以二進位制寫入內容時,需要在寫入內容的引數中指定二進位制寫入:f.write(b』寫入內容』)
# 使用二進位制寫入檔案內容
f = open('讀寫檔案.txt', 'wb')
# 寫入內容全是英文本串時有三種方式
# 1、寫入字串前加b,指定為bytes寫入,因為所有的字串都是英文,英文都支援ascii碼,所以指定編碼方式可以省略
f.write(b'hello\n')
# 2、對寫入字串使用指定編碼方法的方式寫入
f.write('hello world\n'.encode('utf8'))
# 3、指定位元組串方式存入,字串後面指明編碼方式
f.write(bytes('i hope everyone is well',encoding='cp936'))
f.close()
寫入內容為中文字串時只支援上面英文寫入方法的後兩種,如果使用第一種則會報錯,因為ascii碼只儲存了英文本元
f.read()
從檔案中讀取指定大小的內容檔案,括號裡面的引數為讀取內容的字串長度,未指定或未負數時,讀取所有內容。
f.readline()
讀取一行內容,包括換行符\n,括號中指定引數,同f.read()
f.readlines()
讀取所有的檔案內容,並以列表的形式返回,引數同上。
f.write()
寫入內容,引數為寫入的文字內容
f.writelines()
寫入多行內容,可以使用換行符寫入,或者使用三引號寫入固定格式的多行內容。
f.tell()
返回指標所在位置
f.seek()
移動指標所在位置
f.truncate()
從檔案的首行首字元開始截斷,擷取指定長度字串後將後面其餘的字元刪除,預設不指定時刪除所有。
f.flush()
重新整理檔案快取,直接將緩衝區的內容立即寫入檔案,不是等待輸出緩衝區寫入
f.flush()演示:在執行上面的**的時候,每個5秒的時間開啟檔案檢視,發現內容不是一次寫入的,會5秒寫入一次並重新整理。
import time
fi = '1234567890'
f = open(r'c:\users\js-143\desktop\測試使用.txt',mode='r+')
for i in range(5):
f.write(fi)
time.sleep(5)
f.flush()
假檔案的操作需要匯入io模組,假檔案的讀取方法:f.getvalue()。
mport io
f1 = io.stringio() # 建立文字模式的假檔案
f1.write('文字模式')
f2 = io.bytesio() # 建立二進位制模式的假檔案
f2.write('二進位制模式'.encode('utf8'))
print(f1.getvalue())
print(f2.getvalue().decode('utf-8'))
注意:假檔案一旦關閉,檔案就會消失,不會被儲存。
如果在開發程式中進行讀寫檔案後沒有使用close方法關閉檔案,可能會造成意想不到的問題。對此可以使用with語句開啟檔案,這樣就不需要我們自己呼叫close()方法關閉檔案,當**跳出with語句之後,python直譯器會自動呼叫close()方法關閉檔案。
語法格式
with open(files) as f:
語句體
示例
files = '''
仁義一生,死於詔獄,難言不得死所,何憾於天,何怨於人?
惟我身副憲臣,曾受顧命,孔子雲:託孤寄命,臨大節而不可奪。
持此一念,終可以見先帝於在天,對二祖十宗與皇天后土、天下萬世矣!
大笑大笑還大笑,刀砍東風,於我何有哉!
'''with open(r'c:\users\js-143\desktop\測試使用.txt',mode='r+') as f:
f.writelines(files)
f.read()
print(f.closed)
檢視檔案是否關閉的方法:f.closed # 返回bool值。
上下文管理方法的原理:使用with語句時,底層**呼叫了魔法方法:__enter__ 和 __exit__
os模組中提供了多種操作檔案和檔案目錄的方法
菜鳥:python官網:
python 檔案操作
簡明 python 教程 中的例子,python 執行出錯,用open代替file 可以執行。poem programming is fun when the work is done if you wanna make your work also fun use python f open e ...
python檔案操作
1,將乙個路徑名分解為目錄名和檔名兩部分 a,b os.path.split c 123 456 test.txt print a print b 顯示 c 123 456 test.txt 2,分解檔名的副檔名 a,b os.path.splitext c 123 456 test.txt pri...
Python 檔案操作
1.開啟檔案 如下 f open d test.txt w 說明 第乙個引數是檔名稱,包括路徑 第二個引數是開啟的模式mode r 唯讀 預設。如果檔案不存在,則丟擲錯誤 w 只寫 如果檔案 不存在,則自動建立檔案 a 附加到檔案末尾 r 讀寫 如果需要以二進位制方式開啟檔案,需要在mode後面加上...