版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第6章
文件python程序設(shè)計基礎(chǔ)教程6.1文件基本操作
6.1.1文件概述從讀寫方式來說,分為順序文件和隨機(jī)文件。按照存儲的方式,分為文本文件和二進(jìn)制文件。文本文件是基于單一特定字符編碼(如ASCII,UTF-8)的文件。二進(jìn)制文件是基于值編碼的文件。6.1文件基本操作
6.1.2文件的打開和關(guān)閉語法格式:open(filename[,mode='r'][,buffering=-1][,encoding=None])filename為待打開的文件的路徑及名稱。
若該文件與程序在同一目錄下,則文件的路徑可以省略。
為了方便程序的遷移,通常filename通常給出是數(shù)據(jù)文件的相對路徑。文件的打開open函數(shù)中的mode參數(shù)6.1.2文件的打開和關(guān)閉模式含義'r'以讀取方式打開文件(默認(rèn)打開方式)'w'以寫入方式打開文件,文件原內(nèi)容被清空'x'新建文件并寫入方式,若文件已存在則報錯'a'以追加方式打開文件,追加在末尾位置'b'以二進(jìn)制模式打開文件't'以文本模式打開文件(默認(rèn)方式)'+'以讀/寫方式打開文件其中,'b'、't'、'+'方式,可與'r'、'w'、'x'、'a'方式組合使用6.1文件基本操作
6.1文件基本操作
文件的打開open函數(shù)中的buffering參數(shù)
6.1.2文件的打開和關(guān)閉buffering含義-1設(shè)置緩沖區(qū)大小為io.DEFAULT_BUFFER_SIZE0二進(jìn)制文件禁止緩存,文本文件不可以禁止緩存1行緩沖>1設(shè)置緩沖區(qū)大小,以字節(jié)為單位6.1文件基本操作
文件的打開open函數(shù)中的encoding參數(shù)
可選參數(shù),指定用來解碼或編碼的編碼格式的名稱。此參數(shù)只在文本模式中使用。默認(rèn)編碼依賴于平臺。
可以通過encoding參數(shù)指定用于編碼及解碼的編碼格式名稱。1
6.1.2文件的打開和關(guān)閉6.1文件基本操作文件的關(guān)閉語法格式:file.close()
通過文件的close方法可以將打開的文件關(guān)閉。尤其帶緩沖的寫文件操作,若沒有關(guān)閉文件,有可能丟失寫入數(shù)據(jù)。16.1.2文件的打開和關(guān)閉6.1文件基本操作簡潔的文件打開關(guān)閉方法語法格式:withopen(filename[,mode='r'])asf: <文件處理語句>
使用此種簡潔的寫法,可以不用書寫f.close()語句。在with結(jié)構(gòu)中的文件處理語句運(yùn)行結(jié)束,會自動調(diào)用f.close()關(guān)閉文件。16.1.2文件的打開和關(guān)閉6.1文件基本操作讀文件read方法file.read(num)
其中,file為已打開待讀取內(nèi)容的文件對象,num指定從文件讀取的字符或字節(jié)數(shù),若open時用"rb"模式打開文件,則num指定讀取的字節(jié)數(shù);若open時用"r"模式打開文件,則num指定讀取的字符數(shù)。26.1.3文件的讀寫6.1文件基本操作讀文件read方法
如文件內(nèi)容為“讀取Python文件輸出你好Python!”
#以文本文件形式讀取文件內(nèi)容f=open('D:\\python\\ch6\\test.txt','r')print(f.read(6))f.close()#以二進(jìn)制D:\\python\\ch6\\test.txt','rb')print(f.read(6))f.close()6.1.3文件的讀寫文件是以r模式打開,則讀取6個字符串,返回“讀取Pyth”,文件若是以rb模式打開,則讀取6個字節(jié),返回“\xb6\xc1\xc8\xa1Py”,因?yàn)槊總€漢字占兩個字節(jié),“\xb6\xc1”為“讀”字符所對應(yīng)的編碼,“\xc8\xa1”為“取”字符所對應(yīng)的編碼.6.1文件基本操作讀文件readline方法file.readline(num)
該方法雖然也可以有參數(shù)num,但使用了參數(shù)num,等價于file.read(num),因此使用較少。
該方法通常使用方法為file.readline(),其功能為讀出文件中的一行內(nèi)容,即從當(dāng)前位置開始讀取,直到遇到換行符。26.1.3文件的讀寫6.1文件基本操作讀文件readline方法6.1.3文件的讀寫讀取文件D:\python\ch6\2.txt文件內(nèi)容。文件內(nèi)容如下:#以文本文件形式讀取文件內(nèi)容f=open('D:\\python\\ch6\\2.txt','r')print(f.readline())print(f.readline(6))print(f.read(6))print(f.readline())f.close()6.1文件基本操作讀文件readlines方法2#以文本文件形式讀取文件內(nèi)容f=open('D:\\python\\ch6\\2.txt','r')forlineinf.readlines():print(line)whileTrue:aline=f.readline()ifaline!=’’:print(aline)else:breakf.close()6.1.3文件的讀寫6.1文件基本操作寫文件write方法file.write(str)
其中,file為打開的準(zhǔn)備寫入的文件對象,str為待寫入文件的字符串。執(zhí)行該語句后,即將字符串str寫入文件file中。26.1.3文件的讀寫6.1文件基本操作寫文件write方法file.writelines(strlist)##以文本文件形式讀取文件內(nèi)容withopen('D:\\python\\ch6\\1.txt','w')asf:f.writelines([“hellopython!\n”,“Pythonisaprogramminglanguage!”])6.1.3文件的讀寫6.1文件基本操作tell方法和seek方法file.tell()返回當(dāng)前指針的位置。file.seek(offset,whence)其中,whence為參考點(diǎn),可選值有0,1,2,0表示從文件開頭開始偏移,1表示從文件當(dāng)前位置開始偏移,2表示從文件末尾開始偏移,offset為偏移量,是以字節(jié)為單位。注意:若以文本文件方式打開文件,則只允許從文件頭(參考點(diǎn)為0)開始偏移,若以二進(jìn)制方式打開文件,則三種偏移方式都可以。6.1.4文件定位6.1文件基本操作tell方法和seek方法6.1.4文件定位讀D:\python\ch6\登鸛雀樓.txt,做tell()、seek()函數(shù)應(yīng)用。withopen('登顴雀樓.txt','r+')asf:print(f.tell()) #顯示當(dāng)前指針位置s=f.readline()#讀第一行print(s)#輸出這一行print(f.tell()) #顯示當(dāng)前指針位置f.seek(0,2) #指針定位到結(jié)尾print(f.tell()) #顯示當(dāng)前指針位置,即文件長度運(yùn)行結(jié)果:0白日依山盡,黃河入海流。26506.1文件基本操作os模塊os.mkdir(dirpath)在dirpath指定的位置創(chuàng)建目錄。os.getcwd()返回當(dāng)前的工作目錄路徑。os.chdir(dirpath)改變工作目錄為dirpath。os.listdir(dirpath)獲取dirpath路徑下所有的文件,返回該路徑下所有文件的文件名構(gòu)成的列表。os.remove(filename)刪除文件filename。os.rmdir(dirpath)刪除dirpath指定的空目錄。注意,os.rmdir只能刪除空目錄,若不為空則報錯。os.rename(old,new)將old文件重命名為new。6.1.5os庫6.1文件基本操作os.path模塊os.path.abspath(filename)通過該函數(shù)可以獲取文件filename完整的路徑,即絕對路徑。os.path.basename(path)獲取path里的文件名,若path本身是目錄則返回空字符串。os.path.dirname(path)獲取path里的目錄部分。os.path.exists(path)判斷path路徑是否存在,若存在則返回True,否則返回False。os.path.getsize(path)返回文件或者目錄的大小,如果文件不存在就返回錯誤,單位為字節(jié)。os.path.split(path)將path里的路徑和名稱分開,返回(路徑,文件名)構(gòu)成的元組。os.path.isfile(path)判斷給出的路徑是否是文件,文件不存在返回False。os.path.isdir(path)判斷給出的路徑是否是目錄,目錄不存在返回False。os.path.join(path,filename)連接path路徑和filename文件。6.1.5os庫6.1文件基本操作time模塊time.time()獲取當(dāng)前時間戳,返回值為浮點(diǎn)數(shù),計算從世界標(biāo)準(zhǔn)時間到當(dāng)前時間之間的總秒數(shù)。time.ctime()獲取當(dāng)前時間,并以易讀方式顯示。os.path.split(path)將path里的路徑和名稱分開,返回(路徑,文件名)構(gòu)成的元組。time.gmtime()獲取當(dāng)前時間,并表示為計算機(jī)可以處理的格式。time.strftime(tpl,ts)借助時間格式控制符來輸出格式化的時間字符串。其中tpl表示格式化的模板字符串參數(shù),取值如下,ts表示計算機(jī)內(nèi)部時間類型變量。time.sleep(s)
s表示擬休眠的時間,單位是秒,可以是浮點(diǎn)數(shù)。6.1.6time庫6.1文件基本操作time模塊time.strftime(tpl,ts)6.1.6time庫importtimetime.gmtime()print(time.strftime("%Y-%m-%d%H:%M:%S",t))時間控制格式符含義%Y表示四位數(shù)的年份,取值范圍為0001~9999,如1900。%m表示月份(01~12),例如10%d表示月中的一天(01~31)例如:23%H表示24小時制小時數(shù)(00~23),例如:14%M表示分鐘數(shù)(00~59),例如46%S表示秒(00~59),例如26%B表示本地完整的月份名稱,比如January%b表示本地簡化的月份名稱,比如Jan%a表示本地簡化的周日期,Mon~Sun,例如Wed%A表示本地完整周日期,”Monday~Sunday,例如Wednesday%p表示上下午,取值為AM或PM6.1文件基本操作time模塊time.strptime(str,tpl)通過tpl模板定義的參數(shù)逐一解析字符串中對應(yīng)的每一個值,形成一個時間變量。轉(zhuǎn)化成一個計算機(jī)內(nèi)部可以操作的一個時間。輸出格式為struct_time。其中tpl表示格式化的模板字符串參數(shù),str表示字符串形式的時間。6.1.6time庫importtimeprint(time.strptime("2023-5-2315:22:20",'%Y-%m-%d%H:%M:%S'))6.1文件基本操作time模塊time.perf_counter()返回一個CPU級別的精確時間計數(shù)值,單位為秒,由于這個計數(shù)值起點(diǎn)不確定,連續(xù)調(diào)用差值才有意義,通常用于測量時間差。6.1.6time庫importtimestart=time.perf_counter()end=time.perf_counter()print(end-start)6.2常用文件格式CSV(CommaSeparatedValues),即逗號分隔值(也稱字符分隔值),是一種常用的文本格式,用以存儲表格數(shù)據(jù),包括數(shù)字或者字符。在處理數(shù)據(jù)時通常會使用csv格式的文件。CSV文件可以通過Excel或者記事本打開,也可以使用文本編輯工具打開。一般的表格處理工具(Excel)都可以將數(shù)據(jù)另存為或者導(dǎo)出為CSV格式。CSV文件特點(diǎn)如下:(1)讀取的數(shù)據(jù)一般為字符類型,若要得到數(shù)據(jù)類型,需要進(jìn)行轉(zhuǎn)換(2)以行為單位讀取文件(3)列之間以逗號或者制表符分隔,通常為半角逗號6.2.1CSV格式文件6.2常用文件格式csv.reader()函數(shù)實(shí)現(xiàn)讀取CSV數(shù)據(jù)格式的文件。csv.reader(file,dialect='excel')csv.writer()函數(shù)實(shí)現(xiàn)向CSV數(shù)據(jù)格式的文件寫入數(shù)據(jù)。csv.writer(file,dialect='excel')6.2.1CSV格式文件6.2常用文件格式向D:\\python\\ch6\\2.csv文件寫入數(shù)據(jù),并打印輸出。6.2.1CSV格式文件#向CSV文件寫入數(shù)據(jù)importcsvwithopen("D:\\python\\ch6\\2.csv",'w',encoding='utf-8',newline='')asf:writer=csv.writer(f)writer.writerow(['jone',2204,66,67,68])writer.writerows([['michel',2205,76,77,78],['mike',2206,86,87,88]])datas=[['mini',2207,99,98,97],['jack',2208,96,97,68]]forrowindatas:
writer.writerow(row)6.2常用文件格式j(luò)son模塊是Python處理JSON格式數(shù)據(jù)的標(biāo)準(zhǔn)庫。JSON格式是一種數(shù)據(jù)交換格式,采用文本存儲數(shù)據(jù)對象的格式。json模塊提供了處理JSON格式數(shù)據(jù)的函數(shù)。json.dump()方法實(shí)現(xiàn)將Python數(shù)據(jù)格式轉(zhuǎn)換為JSON格式字符串,并返回結(jié)果至指定的文件。json.dump(obj,fp)參數(shù)obj為待轉(zhuǎn)為JSON字符串格式的數(shù)據(jù),fp為轉(zhuǎn)換后結(jié)果記錄文件。json.load()方法實(shí)現(xiàn)將JSON字符串轉(zhuǎn)換為Python格式數(shù)據(jù),與json.dump()函數(shù)互為逆操作。json.load(fp)參數(shù)fp為待讀出JSON字符串的文件。通過該函數(shù),將讀出的JSON格式字符串轉(zhuǎn)換為Python數(shù)據(jù)格式。6.2.2JSON格式文件6.2常用文件格式importjsonwithopen('D:\\jsontest1.json',encoding='utf-8')asf:data=json.load(f)print(data)print(type(data))6.2.2JSON格式文件6.2常用文件格式j(luò)son.dumps()方法實(shí)現(xiàn)將Python數(shù)據(jù)格式轉(zhuǎn)換為JSON格式字符串,并直接返回JSON格式字符串json.dumps(obj)
參數(shù)obj為待轉(zhuǎn)為JSON字符串的Python格式數(shù)據(jù)。json.loads(str)
參數(shù)str為待轉(zhuǎn)換的JSON格式的字符串。json.loads()方法實(shí)現(xiàn)將JSON格式字符串轉(zhuǎn)換為Python數(shù)據(jù)格式,功能與json.load()函數(shù)相似,與json.dumps()函數(shù)互為逆操作。6.2.2JSON格式文件6.2常用文件格式importjsonstu='{"12345":"mike","12346":"jack","12
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度綠色建筑政策支持場外工程合同規(guī)范文本2篇
- 鄭州西亞斯學(xué)院《別墅建筑空間設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江農(nóng)業(yè)商貿(mào)職業(yè)學(xué)院《中級韓國語視聽說》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年高科技實(shí)驗(yàn)室場地租賃及配套設(shè)施供應(yīng)合同2篇
- 創(chuàng)傷科護(hù)士工作總結(jié)
- 美容美發(fā)店話務(wù)員工作總結(jié)
- 飛行器材租賃合約三篇
- 商務(wù)中心保安工作總結(jié)
- 輸液外滲知識培訓(xùn)課件
- 網(wǎng)絡(luò)科技行業(yè)的美工工作總結(jié)
- 酒店客房打掃培訓(xùn)
- 2024-2025學(xué)年高考英語語法第一輪復(fù)習(xí):定語從句(講義)(原卷版+解析)
- 保險理賠崗位招聘面試題與參考回答(某大型央企)2024年
- 第10課《我們不亂扔》(教學(xué)設(shè)計)-部編版道德與法治二年級上冊
- 瑞士萬通831KF卡爾費(fèi)休水分測定儀干貨-庫侖法
- 第14章第1節(jié)熱機(jī)-課件(共21張課件)-人教版初中物理九年級全一冊.課件
- 2025屆浙江省樂清市知臨中學(xué)高一數(shù)學(xué)第一學(xué)期期末檢測試題含解析
- 課程設(shè)計報告課程設(shè)計報告書(3篇)
- 行車調(diào)度員技能競賽考試題庫及含答案
- 廣東省廣州市(2024年-2025年小學(xué)四年級語文)人教版期末考試(上學(xué)期)試卷及答案
- 貴州省歷年中考語文現(xiàn)代文閱讀之非連續(xù)性文本閱讀13篇(含答案)(2003-2022)
評論
0/150
提交評論