Python程序設(shè)計基礎(chǔ) 課件 第6章 文件_第1頁
Python程序設(shè)計基礎(chǔ) 課件 第6章 文件_第2頁
Python程序設(shè)計基礎(chǔ) 課件 第6章 文件_第3頁
Python程序設(shè)計基礎(chǔ) 課件 第6章 文件_第4頁
Python程序設(shè)計基礎(chǔ) 課件 第6章 文件_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論