python中開啟檔案命令 open(),open命令返回檔案的乙個控制代碼:如:
f = open('e:\\123.txt')
#read()對開啟的檔案進行讀的操作
(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'
(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) #
將游標移動到檔案開頭
(f.read())
f.close()
f = open('e:\\123.txt
',mode='
a+',encoding='
gbk') #
在 a+ 模式下,將在檔案的末尾追加資料,不會覆蓋原來的內容
f.write('
\njack is a student')
f.seek(0)
#將游標移動到檔案開頭
(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 只...