




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Python文件文件的概念文件是存儲在外部介質上的用文件名標識的數據集合。訪問存放在外部介質上的數據,先按文件名找到所指定的文件,再從該文件中讀取數據。要向外部介質存儲數據,必須先建立一個文件,才能向它寫入數據。文件操作是一種基本的輸入/輸出方式,在實際問題求解過程中經常碰到。數據以文件的形式進行存儲,操作系統(tǒng)以文件為單位對數據進行管理,文件系統(tǒng)仍是高級語言普遍采用的數據管理方式。文件格式存儲形式:磁盤文件外部設備:標準輸入/輸出文件數據的組織形式:(按編碼形式分)文本文件:只包含基本文本字符,不包括格式二進制文件:需要相應程序才能打開,如word、pdf等文件操作1)打開文件并創(chuàng)建文件對象:open2)對象對文件內容進行讀/寫操作:讀(read)操作:從文件中取出數據,再輸入到計算機內存;寫(write)操作:向文件寫入數據,將內存數據輸出到文件。3)關閉文件:close打開/關閉文件fo=open(文件名[,打開方式])fo.close()r:從文件向內存輸入數據,文件必須存在的w:從內存向文件寫數據,文件不存在則新建,文件存在則覆蓋。a:向已有文件追加數據,不存在則新建。r+,w+,a+:可以寫入和讀取文件對象屬性文件屬性的引用方法為:文件對象名.屬性名文件對象屬性fo=open("file.txt","wb")print("Nameofthefile:",)print("Closedornot:",fo.closed)print("Openingmode:",fo.mode)fo.close()程序運行結果如下:Nameofthefile:file.txtClosedornot:FalseOpeningmode:wb文件對象方法文本文件的讀取1.read()方法:默認讀出全部內容,讀取結果為字符串
變量=文件對象.read([count])注:count是字節(jié)數量,表示一次讀count個字節(jié)2.readline()方法:讀一行,讀取結果為字符串變量=文件對象.readline()3.readlines()方法:讀出所有行,以列表形式存放,一行存放為一個元素變量=文件對象.readlines()例6.1已經建立文本文件data.txt,統(tǒng)計文件中英文元音字母出現的次數。分析:先讀取文件的全部內容,得到一個字符串,然后遍歷字符串,統(tǒng)計元音字母的個數。infile=open("data.txt","r")#打開文件,準備輸出文本文件s=infile.read() #讀取文件全部字符print(s) #顯示文件內容n=0forcins: #遍歷讀取的字符串
ifcin'aeiouAEIOU’:n+=1print(n)infile.close() #關閉文件例6.2已經建立文本文件data.txt,統(tǒng)計文件中英文元音字母出現的次數。用readline()方法實現。分析:逐行讀取文件,得到一個字符串,然后遍歷字符申,統(tǒng)計元音字母的個數。當文件讀取完畢,得到一個空串,控制循環(huán)結束。infile=open("data.txt","r")#打開文件,準備輸出文本文件s=infile.readline() #讀取一行n=0whiles!='': #沒有讀完時繼續(xù)循環(huán)
print(s[:-1]) #顯示文件內容
forcins: #遍歷讀取的字符串
ifcin'aeiouAEIOU':n+=1s=infile.readline() #讀取下一行print(n)infile.close() #關閉文件例6.3已經建立文本文件data.txt,統(tǒng)計文件中元音字母出現的次數。用readlines方法實現。分析:讀取文件所有行,得到一個字符串列表,然后遍歷列表,統(tǒng)計元音字母的個數。infile=open("data.txt","r")#打開文件,準備輸出文本文件ls=infile.readlines() #讀取所有行,得到一個列表n=0forsinls: #遍歷列表
print(s[:-1]) #顯示文件內容
forcins: #遍歷讀取的字符串
ifcin'aeiouAEIOU':n+=1print(n)infile.close() #關閉文件文本文件的寫入1.write()方法文件對象.write(字符串)例6.4從鍵盤輸入若干字符串,逐個將它們寫入文件data1.txt中,直到輸入“*”時結束。然后從該文件中逐個讀出字符串,并在屏幕上顯示出來。分析:輸入一個字符串,如果不等于“*”則寫入文件,然后再輸入一個字符串,進行循環(huán)判斷,直到輸入“*”結束循環(huán)。fo=open("datal.txt","w") #打開文件,準備建立文本文件print("輸入多行字符串(輸入“*”結束):")s=input("一次輸入一個串,如果只輸入*結束:") #從鍵盤輸入一個字符串whiles!="*": #不斷輸入,直到輸入結束標志“*”
fo.write(s+"\n") #向文件寫入一個字符串
s=input("再次輸入一個字符串:")#從鍵盤輸入一個字符串fo.close()fo=open("datal.txt","r") #打開文件,準備讀取文本文件s=fo.read()print("輸出文本文件:")print(s.strip())fo.close()文本文件的寫入2.writelines()方法文件對象.writelines(字符串元素的列表)例6.5從鍵盤輸入若干字符串,逐個將它們寫入文件data1.txt的尾部,直到輸入“*”時結束。然后從該文件中逐個讀出字符串,并在屏幕上顯示出來。分析:首先以“a”方式打開文件,當前位置定位在文件末尾,可以繼續(xù)寫入文本而不改變原有的文件內容。本例考慮先輸入若干個字符串,并將字符串存入一個列表中,然后通過writelines()方法將全部字符串寫入文件。print("輸入多行字符串(輸入“*”結束):")lst=[]whileTrue: #不斷輸入,直到輸入“*”結束標志
s=input() #從鍵盤輸入一個字符串
ifs=="*":breaklst.append(s+"\n") #將字符串加到列表末尾fo=open("data1.txt","a") #打開文件,準備追加文本文件fo.writelines(lst) #向文件寫入一個字符串fo.close()fo=open("data1.txt","r") #打開文件,準備讀取文本文件s=fo.read()print("輸出文本文件:")print(s.strip())文件操作應用舉例例6.6有兩個文件f1.txt和f2.txt,各存放一行已經按升序排列的英文字母,將兩個文件中的內容合并,要求合并后依然按字母升序排列,并輸出到一個新文件f.txt中去。分析:分別從兩個有序的文件讀出一個字符,將ASCII值小的字符寫到f.txt文件,直到其中一個文件結束而終止。然后將未結束文件中的剩余數據復制到f.txt文件,直到該文件結束而終止。程序如下:defftcomb(fname1,fname2,fname3):#文件合并
fo1=open(fname1,"r")fo2=open(fname2,"r")fo3=open(fname3,"w")c1=fo1.read(1)c2=fo2.read(1)whilec1!=""andc2!="":ifc1<c2:fo3.write(c1)c1=fo1.read(1)elifc1==c2:fo3.write(c1)c1=fo1.read(1)fo3.write(c2)c2=fo2.read(1)else:fo3.write(c2)c2=fo2.read(1)whilec1!="": #文件1復制未結束
fo3.write(c1)c1=fol.read(1)whilec2!="": #文件2復制未結束
fo3.write(c2)c2=fo2.read(1)fo1.close()fo2.close()fo3.close()defftshow(fname): #輸出文本文件
fo=open(fname,"r")s=fo.read()print(s.replace("\n",""))#去掉字符串中的換行符后輸出
fo.close()defmain():ftcomb("f1.txt","f2.txt","f.txt")ftshow("f.txt")main()文件操作應用舉例例6.7根據考試成績,統(tǒng)計學科等級水平。分析:某學校對學生的附加科目進行能力測試,并按以下標準統(tǒng)計學科等級水平:(1)生物和科學兩門課都達到60分,總分達到180分為及格。(2)每門課達到85分,總分達到260分為優(yōu)秀。(3)總分不到180分或有任意一門課不到60分,為不及格。文件操作應用舉例設學生成績原始數據存儲在score.txt文件中,每項數據用一個空格分隔,文件中沒有表頭,只有學生的信息。具體數據如表6-4所示。編程要求:從score.txt文件中讀取學生成績數據,判定等級并寫入level.txt文件中。程序實現方案一:(1)讀取文件score.txt數據到列表L中列表L中的數據項對應著文件中的每條學生記錄,通過循環(huán)語句遍歷L,提取需要的學號和三門課的成績,并存放在列表x中。(2)判定學科等級列表x包含4個數據項,x[0]為學號,x[1]、x[2]和x[3]分別為“語數”、“生物”、“科學”三門課的成績,需要轉換為整數類型以便進行求和等數值運算,最后通過分支語句,將求得的等級結果存放在key變量中。(3)將學號和等級結果按一定格式寫入文件level.txt中程序如下:L=list(open('score.txt','r'))f=open('level.txt','w')forsinL:x=s.split() #根據空格分隔每個數據
sum=0foriinrange(1,len(x)):x[i]=int(x[i])sum+=x[i]ifx[1]>=85andx[2]>=85andx[3]>=85andsum>=260:key='優(yōu)秀'elifx[2]>=60andx[3]>=60andsum>=180:key='及格'else:key='不及格'f.write('%s\t%s\n'%(x[0],key))f.close()例6.8在number.dat文件中放有若干個不小于2的正整數(數據間以逗號分隔)編寫程序實現:(1)在prime()函數中判斷和統(tǒng)計這些整數中的素數以及個數。(2)在主函數中將number.dat中的全部素數以及素數個數輸出到屏幕上。程序如下:defprime(a,n): #判斷列表a中的n個元素是否為素數
k=0foriinrange(0,n):
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教師培訓匯報交流
- 2025-2030中國壞死性皮膚感染的治療行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2025-2030中國廚房家具行業(yè)發(fā)展分析及發(fā)展趨勢預測與投資風險研究報告
- 2025-2030中國個人理財行業(yè)市場發(fā)展分析及發(fā)展前景與投資研究報告
- 2025-2030POS終端行業(yè)市場現狀供需分析及重點企業(yè)投資評估規(guī)劃分析研究報告
- 水利水電工程項目立項流程解析與試題及答案
- 2025年中級經濟師考試應試策略試題及答案
- 眼球破裂傷的健康宣教
- 下肢腐蝕傷的護理課件
- 肌無力危象護理課件
- 2025-2030中國轉輪除濕機行業(yè)前景動態(tài)及投資規(guī)劃分析報告
- 八年級上冊語文必背課文資料合集
- 針灸醫(yī)學的歷史回顧之古代名醫(yī)的針灸先例
- 【艾瑞咨詢】2024年中國健康管理行業(yè)研究報告494mb
- 年產xxx千件自行車配件項目可行性研究報告
- DZ/T 0261-2014滑坡崩塌泥石流災害調查規(guī)范(1∶50 000)
- T/CQAP 3014-2024研究者發(fā)起的抗腫瘤體細胞臨床研究細胞制劑制備和質量控制規(guī)范
- 初中體育教學中德育教育的現狀、問題與突破路徑探究
- 基層供銷社管理制度
- 農業(yè)供應鏈管理考試試題及答案
- 人行雨棚施工方案
評論
0/150
提交評論