




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章
文件python程序設(shè)計(jì)基礎(chǔ)教程6.1文件基本操作
6.1.1文件概述從讀寫方式來說,分為順序文件和隨機(jī)文件。按照存儲(chǔ)的方式,分為文本文件和二進(jìn)制文件。文本文件是基于單一特定字符編碼(如ASCII,UTF-8)的文件。二進(jìn)制文件是基于值編碼的文件。6.1文件基本操作
6.1.2文件的打開和關(guān)閉語(yǔ)法格式:open(filename[,mode='r'][,buffering=-1][,encoding=None])filename為待打開的文件的路徑及名稱。
若該文件與程序在同一目錄下,則文件的路徑可以省略。
為了方便程序的遷移,通常filename通常給出是數(shù)據(jù)文件的相對(duì)路徑。文件的打開open函數(shù)中的mode參數(shù)6.1.2文件的打開和關(guān)閉模式含義'r'以讀取方式打開文件(默認(rèn)打開方式)'w'以寫入方式打開文件,文件原內(nèi)容被清空'x'新建文件并寫入方式,若文件已存在則報(bào)錯(cuò)'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)編碼依賴于平臺(tái)。
可以通過encoding參數(shù)指定用于編碼及解碼的編碼格式名稱。1
6.1.2文件的打開和關(guān)閉6.1文件基本操作文件的關(guān)閉語(yǔ)法格式:file.close()
通過文件的close方法可以將打開的文件關(guān)閉。尤其帶緩沖的寫文件操作,若沒有關(guān)閉文件,有可能丟失寫入數(shù)據(jù)。16.1.2文件的打開和關(guān)閉6.1文件基本操作簡(jiǎn)潔的文件打開關(guān)閉方法語(yǔ)法格式:withopen(filename[,mode='r'])asf: <文件處理語(yǔ)句>
使用此種簡(jiǎn)潔的寫法,可以不用書寫f.close()語(yǔ)句。在with結(jié)構(gòu)中的文件處理語(yǔ)句運(yùn)行結(jié)束,會(huì)自動(dòng)調(diào)用f.close()關(guān)閉文件。16.1.2文件的打開和關(guān)閉6.1文件基本操作讀文件read方法file.read(num)
其中,file為已打開待讀取內(nèi)容的文件對(duì)象,num指定從文件讀取的字符或字節(jié)數(shù),若open時(shí)用"rb"模式打開文件,則num指定讀取的字節(jié)數(shù);若open時(shí)用"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個(gè)字符串,返回“讀取Pyth”,文件若是以rb模式打開,則讀取6個(gè)字節(jié),返回“\xb6\xc1\xc8\xa1Py”,因?yàn)槊總€(gè)漢字占兩個(gè)字節(jié),“\xb6\xc1”為“讀”字符所對(duì)應(yīng)的編碼,“\xc8\xa1”為“取”字符所對(duì)應(yīng)的編碼.6.1文件基本操作讀文件readline方法file.readline(num)
該方法雖然也可以有參數(shù)num,但使用了參數(shù)num,等價(jià)于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)備寫入的文件對(duì)象,str為待寫入文件的字符串。執(zhí)行該語(yǔ)句后,即將字符串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)前指針位置,即文件長(zhǎ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只能刪除空目錄,若不為空則報(bào)錯(cuò)。os.rename(old,new)將old文件重命名為new。6.1.5os庫(kù)6.1文件基本操作os.path模塊os.path.abspath(filename)通過該函數(shù)可以獲取文件filename完整的路徑,即絕對(duì)路徑。os.path.basename(path)獲取path里的文件名,若path本身是目錄則返回空字符串。os.path.dirname(path)獲取path里的目錄部分。os.path.exists(path)判斷path路徑是否存在,若存在則返回True,否則返回False。os.path.getsize(path)返回文件或者目錄的大小,如果文件不存在就返回錯(cuò)誤,單位為字節(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庫(kù)6.1文件基本操作time模塊time.time()獲取當(dāng)前時(shí)間戳,返回值為浮點(diǎn)數(shù),計(jì)算從世界標(biāo)準(zhǔn)時(shí)間到當(dāng)前時(shí)間之間的總秒數(shù)。time.ctime()獲取當(dāng)前時(shí)間,并以易讀方式顯示。os.path.split(path)將path里的路徑和名稱分開,返回(路徑,文件名)構(gòu)成的元組。time.gmtime()獲取當(dāng)前時(shí)間,并表示為計(jì)算機(jī)可以處理的格式。time.strftime(tpl,ts)借助時(shí)間格式控制符來輸出格式化的時(shí)間字符串。其中tpl表示格式化的模板字符串參數(shù),取值如下,ts表示計(jì)算機(jī)內(nèi)部時(shí)間類型變量。time.sleep(s)
s表示擬休眠的時(shí)間,單位是秒,可以是浮點(diǎn)數(shù)。6.1.6time庫(kù)6.1文件基本操作time模塊time.strftime(tpl,ts)6.1.6time庫(kù)importtimetime.gmtime()print(time.strftime("%Y-%m-%d%H:%M:%S",t))時(shí)間控制格式符含義%Y表示四位數(shù)的年份,取值范圍為0001~9999,如1900。%m表示月份(01~12),例如10%d表示月中的一天(01~31)例如:23%H表示24小時(shí)制小時(shí)數(shù)(00~23),例如:14%M表示分鐘數(shù)(00~59),例如46%S表示秒(00~59),例如26%B表示本地完整的月份名稱,比如January%b表示本地簡(jiǎn)化的月份名稱,比如Jan%a表示本地簡(jiǎn)化的周日期,Mon~Sun,例如Wed%A表示本地完整周日期,”Monday~Sunday,例如Wednesday%p表示上下午,取值為AM或PM6.1文件基本操作time模塊time.strptime(str,tpl)通過tpl模板定義的參數(shù)逐一解析字符串中對(duì)應(yīng)的每一個(gè)值,形成一個(gè)時(shí)間變量。轉(zhuǎn)化成一個(gè)計(jì)算機(jī)內(nèi)部可以操作的一個(gè)時(shí)間。輸出格式為struct_time。其中tpl表示格式化的模板字符串參數(shù),str表示字符串形式的時(shí)間。6.1.6time庫(kù)importtimeprint(time.strptime("2023-5-2315:22:20",'%Y-%m-%d%H:%M:%S'))6.1文件基本操作time模塊time.perf_counter()返回一個(gè)CPU級(jí)別的精確時(shí)間計(jì)數(shù)值,單位為秒,由于這個(gè)計(jì)數(shù)值起點(diǎn)不確定,連續(xù)調(diào)用差值才有意義,通常用于測(cè)量時(shí)間差。6.1.6time庫(kù)importtimestart=time.perf_counter()end=time.perf_counter()print(end-start)6.2常用文件格式CSV(CommaSeparatedValues),即逗號(hào)分隔值(也稱字符分隔值),是一種常用的文本格式,用以存儲(chǔ)表格數(shù)據(jù),包括數(shù)字或者字符。在處理數(shù)據(jù)時(shí)通常會(huì)使用csv格式的文件。CSV文件可以通過Excel或者記事本打開,也可以使用文本編輯工具打開。一般的表格處理工具(Excel)都可以將數(shù)據(jù)另存為或者導(dǎo)出為CSV格式。CSV文件特點(diǎn)如下:(1)讀取的數(shù)據(jù)一般為字符類型,若要得到數(shù)據(jù)類型,需要進(jìn)行轉(zhuǎn)換(2)以行為單位讀取文件(3)列之間以逗號(hào)或者制表符分隔,通常為半角逗號(hào)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)庫(kù)。JSON格式是一種數(shù)據(jù)交換格式,采用文本存儲(chǔ)數(shù)據(jù)對(duì)象的格式。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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)知識(shí)2025年系統(tǒng)分析師考試試題及答案
- 孕期常見不適試題及答案
- 襄陽(yáng)d照理論試題及答案
- 政治學(xué)概論試題及答案
- 對(duì)照中級(jí)社會(huì)工作者考試大綱的試題解析試題及答案
- 影響網(wǎng)絡(luò)性能的要素試題及答案
- 2025餐館股份轉(zhuǎn)讓協(xié)議合同樣本
- 初中南鄉(xiāng)子試題及答案
- 古典舞招聘考試題及答案
- 專題頁(yè)測(cè)試題及答案
- 項(xiàng)目volume3修改版-舊20.commissioning servicing manualFMZ5000火災(zāi)探測(cè)和滅火系統(tǒng)控制盤安裝調(diào)試維保手冊(cè)
- 消防安全常識(shí)二十條系列掛圖清晰版
- GB/T 3672.1-2002橡膠制品的公差第1部分:尺寸公差
- GB/T 23227-2018卷煙紙、成形紙、接裝紙、具有間斷或連續(xù)透氣區(qū)的材料以及具有不同透氣帶的材料透氣度的測(cè)定
- GB/T 18049-2017熱環(huán)境的人類工效學(xué)通過計(jì)算PMV和PPD指數(shù)與局部熱舒適準(zhǔn)則對(duì)熱舒適進(jìn)行分析測(cè)定與解釋
- 煙草專賣管理師崗位技能標(biāo)準(zhǔn)(2023版)
- 半條被子(紅軍長(zhǎng)征時(shí)期故事) PPT
- 公司車輛駕駛扣分違章處理證明 模板
- 一次性賠償協(xié)議書模板
- (中職)車削加工技術(shù)全冊(cè)實(shí)訓(xùn)課教案完整版
- 幼兒園繪本故事:《漏》
評(píng)論
0/150
提交評(píng)論