Python檔案讀寫

2022-08-15 15:45:11 字數 4270 閱讀 5236

python中開啟檔案命令 open(),open命令返回檔案的乙個控制代碼:如:
f = open('

e:\\123.txt')

#read()對開啟的檔案進行讀的操作

print

(f.read())

#關閉檔案,檔案開啟後一定要記得關閉檔案。在寫的時候 可以:開啟,關閉先寫完,再寫開啟和關閉中間的**

f.close()

f = open('

e:\\123.txt')

#這段**,open 沒有指定 mode= 引數,預設使用唯讀的方式開啟檔案,檔案沒有寫的許可權

f = open('

e:\\123.txt')

f.write(

'hello python')

f.close()

上面的**會報錯  io.unsupportedoperation: not writable

另外,如果沒有使用為open指定 encoding= 引數,計算機預設使用系統的編碼方式開啟檔案。windows下預設為 gbk, linux下預設為utf-8

檔案的開啟方式格式: 檔案控制代碼 = open('檔案路徑',開啟模式, 編碼方式)

檔案開啟方式:

1.r, 唯讀的方式開啟(檔案必須存在,如果檔案不存在,則會丟擲異常) 注:檔案以什麼方式編碼方式寫的,就以什麼編碼方式開啟

f = open('

e:\\123.txt

',mode='

r',encoding='

utf-8

')

print(f.read())
f.close()

2.w, 只寫模式 (檔案不可讀,如果檔案不存在,則建立乙個新的檔案,如果檔案存在,則會清空裡面的內容)

f = open('

e:\\123.txt

',mode='

w',encoding='

utf-8')

f.write(

'hello python!

') #

在寫的時候,要指定編碼的方式

f.close()

3.a,只追加寫的模式 (檔案不可讀,不存在則建立新的檔案,檔案存在的話,可在後面追加內容)

f = open('

e:\\123.txt

',mode='

a',encoding='

utf-8')

f.write(

'jack is a student')

f.close()

對於非文字的檔案,使用b的模式。'b'表示以位元組的方式進行操作 如:rb,wb,ab 分別對應以上內容,如果以b的方式開啟,讀取到的內容是位元組型別,寫入的時候也需要提供位元組型別,不能指定編碼

f = open('

e:\\123.txt

',mode='

rb') #

指定encoding= 引數 會報錯

print(f.read()) #

b'\xd6\xd0\xb9\xfa

f.close()

以上** 輸出:b'\xd6\xd0\xb9\xfa'  如果在寫的模式下,寫的時候也要以位元組的方式進行寫

'+'模式 ---- r+: 讀寫模式 w+:寫讀模式 a+:寫讀模式

f = open('

e:\\123.txt

',mode='

r+',encoding='

gbk'

)print

(f.read())

f.write(

'helo')

print(f.read()) #

此處在讀的時候,就讀不到 後面的 hello了,因為,在執行完 write(』hello') 這段**後,游標移動到了檔案的末尾

f.close()

在 r+ 模式下,應該先讀,後寫,如果先寫,後讀,同樣的道理,游標移動到了檔案末尾,將讀取不到內容

f = open('

e:\\123.txt

',mode='

w+',encoding='

gbk'

)f.write(

'你好,hellopython

') #

清空檔案中的內容,然後重新寫資料

f.seek(0) #

將游標移動到檔案開頭

print

(f.read())

f.close()

f = open('

e:\\123.txt

',mode='

a+',encoding='

gbk') #

在 a+ 模式下,將在檔案的末尾追加資料,不會覆蓋原來的內容

f.write('

\njack is a student')

f.seek(0)

#將游標移動到檔案開頭

print

(f.read())

f.close()

檔案讀取的其他操作

很多時候,在讀寫檔案的時候,只是開啟檔案,open 而忘記關閉檔案,close,可以使用簡單的方式來操作,使用with open。如:

l1 = ['

靜夜思','

李白','

床前明月光

','疑是地上霜

','舉頭望明月

','低頭思故鄉']

with open(

'e:\\靜夜思.txt

',mode='

w+',encoding='

utf-8

') as f:

for l1_data in

l1: f.write(l1_data + '

\n') #

f.writelines(l1) 可以將列表l1中的內容全部寫進去,但是不換行

f.seek(0)

#將游標放到檔案首

print(f.readlines()) #

逐行讀取檔案,並將檔案按行為元素儲存到乙個列表中

f.seek(3)

index = f.tell() #

獲取當前游標的位置

print(index) #

列印 3

關於seek 和 tell 這兩個函式
with open('

e:\\123.txt

',mode='

w+',encoding='

utf-8

') as f:

f.write(

'abcdefgh

') #

一共 8 個字元,現在想要讀取ef兩個字元

f.seek(4) #

將游標移動到4的位置,也就是 d 的後面,從e開始讀取

index = f.tell() #

獲取游標位置

print(f.read(2),index) #

讀取兩個字元,將讀到 ef

with open('

e:\\123.txt

',mode='

w+',encoding='

utf-8

') as f:

f.write(

'中國一定強

') #

在檔案中寫入: 中國一定強 按照 utf-8的編碼方式寫入

f.seek(6) #

將游標移動到位置 6

index = f.tell() #

讀取游標的位置

print(f.read(2),index) #

讀取兩個字元

以上** 輸出 :一定 6

這裡需要注意的是:移動游標 seek 以及 讀取游標位置 tell 這兩個函式,如果是英文本母。則乙個字元為乙個位置,如果是其他,按照編碼方式來指定或者獲取位置

中文 utf-8 的編碼方式,乙個漢字占用 3 個位元組,所以 '中國'占用6個位置 在移動游標,或者獲取游標位置的時候 要三個三個的移動

read 在讀取的時候,按照能用眼睛看到的最小單位來讀取

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 只...