python 檔案操作

2021-10-10 01:21:00 字數 3257 閱讀 5246

目錄

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後面加上...