開啟檔案,得到檔案控制代碼並賦值給乙個變數
通過控制代碼對檔案進行操作
關閉檔案
f = open('chenli.txt') #開啟檔案2.2 檔案編碼first_line = f.readline()
print('first line:',first_line) #讀一行print('我是分隔線'.center(50,'-'))
data = f.read()# 讀取剩下的所有內容,檔案大時不要用print(data) #列印讀取內容
f.close() #關閉檔案
檔案儲存編碼如下
此刻錯誤的開啟方式
正確的開啟方式
#不指定開啟編碼,預設使用作業系統的編碼,windows為gbk,linux為utf-8,與直譯器編碼無關
f=open('chenli.txt',encoding='gbk') #在windows中預設使用的也是gbk編碼,此時不指定編碼也行
f.read()
1 檔案控制代碼 = open('檔案路徑', '模式')開啟檔案時,需要指定檔案路徑和以何等方式開啟檔案,開啟後,即可獲取該檔案控制代碼,日後通過此檔案控制代碼對該檔案操作。
開啟檔案的模式有:
"+" 表示可以同時讀寫某個檔案
"b"表示以位元組的方式操作
注:以b方式開啟時,讀取到的內容是位元組型別,寫入時也需要提供位元組型別,不能指定編碼
flush原理:
檔案操作是通過軟體將檔案從硬碟讀到記憶體
寫入檔案的操作也都是存入記憶體緩衝區buffer(記憶體速度快於硬碟,如果寫入檔案的資料都從記憶體刷到硬碟,記憶體與硬碟的速度延遲會被無限放大,效率變低,所以要刷到硬碟的資料我們統一往記憶體的一小塊空間即buffer中放,一段時間後作業系統會將buffer中資料一次性刷到硬碟)
flush即,強制將寫入的資料刷到硬碟
滾動條:
import sys,time注意:read(3)代表讀取3個字元,其餘的檔案內游標移動都是以位元組為單位如seek,tell,read,truncatefor i in range(10):
sys.stdout.write('#')
sys.stdout.flush()
time.sleep(0.2)
整理中1. open()語法
open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=true]]]]]])
open函式有很多的引數,常用的是file,mode和encoding
file檔案位置,需要加引號
mode檔案開啟模式,見下面3
buffering的可取值有0,1,>1三個,0代表buffer關閉(只適用於二進位制模式),1代表line buffer(只適用於文字模式),>1表示初始化的buffer大小;
encoding表示的是返回的資料採用何種編碼,一般採用utf8或者gbk;
errors的取值一般有strict,ignore,當取strict的時候,字元編碼出現問題的時候,會報錯,當取ignore的時候,編碼出現問題,程式會忽略而過,繼續執行下面的程式。
newline可以取的值有none, \n, \r, 」, 『\r\n',用於區分換行符,但是這個引數只對文字模式有效;
closefd的取值,是與傳入的檔案引數有關,預設情況下為true,傳入的file引數為檔案的檔名,取值為false的時候,file只能是檔案描述符,什麼是檔案描述符,就是乙個非負整數,在unix核心的系統中,開啟乙個檔案,便會返回乙個檔案描述符。
2. python中file()與open()區別
兩者都能夠開啟檔案,對檔案進行操作,也具有相似的用法和引數,但是,這兩種檔案開啟方式有本質的區別,file為檔案類,用file()來開啟檔案,相當於這是在構造檔案類,而用open()開啟檔案,是用python的內建函式來操作,建議使用open
3. 引數mode的基本取值
character
meaning
『r'open for reading (default)
『w'open for writing, truncating the file first
『a'『b'
binary mode
『t'text mode (default)
『+'open a disk file for updating (reading and writing)
『u'universal newline mode (for backwards compatibility; should not be used in new code)
r、w、a為開啟檔案的基本模式,對應著唯讀、只寫、追加模式;
b、t、+、u這四個字元,與以上的檔案開啟模式組合使用,二進位制模式,文字模式,讀寫模式、通用換行符,根據實際情況組合使用、
常見的mode取值組合
1 r或rt 預設模式,文字模式讀2 rb 二進位制檔案
3
4 w或wt 文字模式寫,開啟前檔案儲存被清空
5 wb 二進位制寫,檔案儲存同樣被清空
6
7 a 追加模式,只能寫在檔案末尾
8 a+ 可讀寫模式,寫只能寫在檔案末尾
9
10 w+ 可讀寫,與a+的區別是要清空檔案內容
11 r+ 可讀寫,與a+的區別是可以寫到檔案任何位置
with open('a.txt','w') as f:pass
with open('a.txt','r') as read_f,open('b.txt','w') as write_f:import osdata=read_f.read()
write_f.write(data)
with open('a.txt','r',encoding='utf-8') as read_f,\
open('.a.txt.swap','w',encoding='utf-8') as write_f:
for line in read_f:
if line.startswith('hello'):
line='哈哈哈\n'
write_f.write(line)
os.remove('a.txt')
os.rename('.a.txt.swap','a.txt')
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後面加上...