版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
郭煒信息科學(xué)技術(shù)學(xué)院1
微博:/guoweiofpku
學(xué)會程序和算法,走遍天下都不怕!實用Python程序設(shè)計文件讀寫信息科學(xué)技術(shù)學(xué)院2文本文件讀寫信息科學(xué)技術(shù)學(xué)院郭煒德國菲森新天鵝堡文本文件讀寫文本文件讀寫概述open函數(shù)打開文件,將返回值放入一個變量,例如f用f.write函數(shù)寫入文件用f.readlines()函數(shù)讀取全部文件內(nèi)容用f.readline()函數(shù)讀取文件一行用f.close()函數(shù)關(guān)閉文件用f.read()讀取全部文件內(nèi)容。返回一個字符串,包含文件全部內(nèi)容4文本文件讀寫創(chuàng)建文件并寫入內(nèi)容a=open("c:\\tmp\\t.txt","w")#文件夾c:\tmp必須事先存在,open不會創(chuàng)建文件夾
#"w"表示寫入,用此種方式打開文件,若文件本來存在,就會被覆蓋a.write("good\n")a.write("好啊\n")a.close()運行后文件c:\tmp\t.txt內(nèi)容:good好啊5文本文件讀寫讀取現(xiàn)有文件f=open("c:\\tmp\\t.txt","r")#"r"表示讀取lines=f.readlines()#每一行都帶結(jié)尾的換行符"\n"f.close()#lines是個字符串列表,每個元素是一行forxinlines:print(x,end="")輸出:good好啊6文本文件讀寫讀取現(xiàn)有文件#不用readlines也行f=open("c:\\tmp\\t.txt","r",encoding="utf-8")forxinf:print(x,end="")f.close()7文本文件讀寫用readline讀文件中的一行infile=open("c:\\tmp\\t.txt","r")whileTrue:data1=infile.readline()#data1帶結(jié)尾的換行符"\n"??招幸灿幸粋€字符,就是"\n" ifdata1=="":#此條件滿足就代表文件結(jié)束
breakdata1=data1.strip()#去掉兩頭空格,包括結(jié)尾的"\n"print(data1)infile.close()8文本文件讀寫如果要讀取的文件不存在會引發(fā)異常:try:f=open("c:\\tmp\\ts.txt","r")#若文件不存在,會產(chǎn)生異常,跳到except后面執(zhí)行l(wèi)ines=f.readlines()
f.close()forxinlines:print(x,end="")exceptExceptionase:print(e)#>>[Errno2]Nosuchfileordirectory:'c:\\tmp\\ts.txt'9文本文件讀寫添加文件內(nèi)容:f=open("c:\\tmp\\t.txt","a")#"a"要打開文件添加內(nèi)容。若文件本來不存在,就創(chuàng)建文件f.write("新增行\(zhòng)n")f.write("ok\n")f.close()good好啊新增行ok文件打開模式"r":文本文件讀"rb":二進(jìn)制文件讀"w":文本文件寫"wb":二進(jìn)制文件寫"r+":文本文件既讀又寫"rb+":二進(jìn)制文件既讀又寫文本文件的編碼信息科學(xué)技術(shù)學(xué)院郭煒威尼斯文本文件的編碼常見編碼有g(shù)bk和utf-8兩種。打開文件時如果編碼不對,則不能正確讀取文件.ANSI對應(yīng)gbk寫入文件時,如果不指定編碼,則用操作系統(tǒng)的缺省編碼Windows:gbk,可能從win10開始是utf-8Linux,MacOs:utf-8python程序的編碼.py文件必須存成utf-8格式,才能運行如果存成ansi格式,則應(yīng)該在文件開頭寫:#coding=gbkprint("你好")文本文件的編碼創(chuàng)建文件和讀取文件時都可以指定編碼outfile=open("c:\\tmp\\t.txt","w",encoding="utf-8")#若打開文件用于寫入時不指定編碼,則使用系統(tǒng)缺省編碼,win10下也可能是Ansi(gbk)outfile.write("這很好ok\n")
outfile.write("這ok")
outfile.close()
infile=open("c:\\tmp\\t.txt","r",encoding="utf-8")
lines=infile.readlines()
infile.close()
forxinlines:
print(x.strip())文本文件的編碼gbk編碼的文件,如果用encoding="utf-8"來open,可能會產(chǎn)生異常。utf-8編碼的文件,如果用encoding="gbk"來open,不會產(chǎn)生異常,但是用read或readline,readlines讀取到的信息會亂碼。信息科學(xué)技術(shù)學(xué)院郭煒文件的路徑瑞士少女峰open文件名參數(shù)的相對路徑形式和絕對路徑形式相對路徑形式:文件名沒有包含盤符open("readme.txt","r")
文件在當(dāng)前文件夾(當(dāng)前路徑)下open("tmp/readme.txt","r") "/"寫成"\\"效果也一樣
文件在當(dāng)前文件夾下的tmp文件夾里面open("tmp/test/readme.txt","r")
文件在當(dāng)前文件夾下的tmp文件夾里面的test文件夾下面open("../readme.txt","r")
文件在當(dāng)前文件夾的上一層文件夾里面open("../../readme.txt","r")
文件在當(dāng)前文件夾的上兩層文件夾里面open("../tmp2/test/readme.txt","r")
文件在當(dāng)前文件夾的上一層的tmp2文件夾的test文件夾里面
tmp2和當(dāng)前文件夾是平級的open("/tmp3/test/readme.txt","r")
文件在當(dāng)前盤符的根文件夾下的tmp3/test/里面open文件名參數(shù)的相對路徑形式和絕對路徑形式絕對路徑形式:文件名包含盤符open("d:/tmp/test/readme.txt","r")路徑也叫文件夾,或者目錄(path,folder,directory)Python程序的“當(dāng)前文件夾(當(dāng)前路徑,當(dāng)前目錄)”程序運行時,會有一個“當(dāng)前文件夾”,open打開文件時,如果文件名不是絕對路徑形式,則都是相對于當(dāng)前文件夾的。一般情況下,.py文件所在的文件夾,就是程序運行時的當(dāng)前文件夾。在Pycharm里面運行程序,就是如此。程序可以獲取當(dāng)前文件夾:importosprint(os.getcwd())
#os.getcdw()獲取當(dāng)前文件夾#>>c:\tmp5\testPython程序的“當(dāng)前文件夾(當(dāng)前路徑,當(dāng)前目錄)”在命令行方式運行程序時,cmd窗口的當(dāng)前文件夾,就是程序的當(dāng)前文件夾,不論程序存在哪里。c:\tmp5\test\t1.py如下:importosprint(os.getcwd())
則:命令提示符Python程序的“當(dāng)前文件夾(當(dāng)前路徑,當(dāng)前目錄)”程序運行期間可以改變當(dāng)前文件夾c:\tmp5\test\t1.py如下:importosprint(os.getcwd())os.chdir("c:/tmp")print(os.getcwd())則:信息科學(xué)技術(shù)學(xué)院郭煒文件夾操作祁連山Python的文件夾操作函數(shù)os庫和shutil庫中有一些函數(shù)可以用來操作文件和文件夾(文件夾也稱為“目錄”)os.chdir(x)將程序的當(dāng)前文件夾設(shè)置為xos.getcwd()求程序的當(dāng)前文件夾os.listdir(x)返回一個列表,里面是文件夾x中的所有文件和子文件夾的名字os.mkdir(x)創(chuàng)建文件夾xos.path.exists(x)判斷文件或文件夾x是否存在os.path.getsize(x) 獲取文件x的大小(單位:字節(jié))os.path.isfile(x)判斷x是不是文件os.remove(x)刪除文件xos.rmdir(x)刪除文件夾x。x必須是空文件夾才能刪除成功os.rename(x,y)將文件或文件夾x改名為y。不但可以改名,還可以起到移動文件或文件夾的作用。例如,os.rename("c:/tmp/a","c:/tmp2/b")可以將文件夾或文件"c:/tmp/a"移動到"c:/tmp2/"文件夾下面,并改名為b。前提是tmp2必須存在。shutil.copyfile(x,y)拷貝文件x到文件y。若y本來就存在,會被覆蓋Python的文件夾操作函數(shù)刪除文件夾的遞歸函數(shù):(不要隨便試,用它刪除了文件夾就不能恢復(fù))importosdefpowerRmDir(path):#連根刪除文件夾pathlst=os.listdir(path) forxinlst:actualFileName=path+"/"+x #x不包括路徑,例如a.txtifos.path.isfile(actualFileName):#actualFileName是文件os.remove(actualFileName)else:powerRmDir(actualFileName)#actualFileName是文件夾os.rmdir(path)powerRmDir("c:/tmp/ttt")powerRmDir("tmp/ttt")#刪除當(dāng)前文件夾下的tmp文件夾下的ttt文件夾Python的文件夾操作函數(shù)獲取文件夾總大小的遞歸函數(shù)importosdefgetTotalSize(path):total=0lst=os.listdir(path)forxinlst:actualFileName=path+"/"+x#x不包括路徑ifos.path.isfile(actualFileName):total+=os.path.getsize(actualFileName)else:total+=getTotalSize(actualFileName)returntotal文件處理實例信息科學(xué)技術(shù)學(xué)院郭煒美國紀(jì)念碑谷程序1:統(tǒng)計文章中的單詞詞頻程序名:countfile.py用命令行方式啟動該程序:pythoncountfile.py對"源文件"進(jìn)行單詞詞頻(出現(xiàn)次數(shù))分析,分析結(jié)果寫入"結(jié)果文件",單詞按照字典序排列28程序1:統(tǒng)計文章中的單詞詞頻文章文件a1.txt的格式:Whenmanycouplesdecidetoexpandtheirfamily,theyoftentakeintoconsiderationthedifferentgenetictraitsthattheymaypassontotheirchildren.Forexample,ifsomeonehasahistoryofheartproblems,theymightbeconcernedaboutpassingthatontotheirchildrenaswell.TreacherCollinssyndrome,orTCS,?isararefacialdisfigurementthatgreatly:slows:thedevelopmentofbonesandothertissuesthatmakeupthehumanface.Asaresult,mostpeopleliving?withTCShave?underdevelopedcheekbones,asmalljaw,andanundersizedchin..................29程序1:統(tǒng)計文章中的單詞詞頻統(tǒng)計的結(jié)果結(jié)果文件r1.txt格式a 8about 2an 1and 4are 1around 1as 2backlash 1be 4......30程序1:統(tǒng)計文章中的單詞詞頻思路:要從源文件中分割出單詞,然后用字典記錄單詞的出現(xiàn)頻率。用文件對象的read函數(shù)讀取全部內(nèi)容到一個字符串,然后分割單詞。31程序2:統(tǒng)計多個文件累計單詞頻率程序名countfiles.py:用法:pythoncountfiles.py對當(dāng)前文件夾(countfiles.py文件所在文件夾)下全部文件名是字母a打頭的.txt文件進(jìn)行詞頻統(tǒng)計,統(tǒng)計的總的結(jié)果寫入"結(jié)果文件"result.txt32程序2:統(tǒng)計多個文件累計單詞頻率思路:要獲得.py
程序所在文件夾下的所有a打頭,.txt結(jié)尾的文件。對每個文件,調(diào)用上面程序1的處理單個文件的函數(shù)進(jìn)行處理importos
#python自帶os
庫os.listdir()可以獲得當(dāng)前文件夾下所有文件和文件夾的列表。列表中元素是文件或文
件夾名字,不帶路徑(目錄)os.path.isfile(x)可以判斷x是不是一個文件(文件夾不是文件)33程序2:統(tǒng)計多個文件累計單詞頻率os.listdir示例假設(shè)c:\tmp文件夾下有文件t.py,
a.txt,b.txt和文件夾hello程序t.py如下:importosprint(os.listdir())則運行t.py輸出結(jié)果為:['a.txt','b.txt','hello','t.py']34程序2:統(tǒng)計多個文件累計單詞頻率實現(xiàn):result={}lst=os.listdir()#列出當(dāng)前文件夾下所有文件和文件夾的名字forxinlst:ifos.path.isfile(x):#如果x是文件
ifx.lower().endswith(".txt")andx.lower().startswith("a"):#x是'a'開頭,.txt結(jié)尾
countFile(x,result)#countFile是程序1中統(tǒng)計一個文件的函數(shù)35程序3:準(zhǔn)確統(tǒng)計文章中的單詞詞頻程序名:countfile_novary.py用法:pythoncountfile_novary.py對"源文件"進(jìn)行單詞詞頻分析,分析結(jié)果寫入結(jié)果
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年投訴處理專員面試題及答案
- 2026年網(wǎng)絡(luò)技術(shù)專員面試全攻略及答案
- 順邦安防公司招聘面試題及答案
- 2026年軟件開發(fā)工程師高級面試題及答案
- 2026年電影業(yè)片方保險顧問面試題及答案參考
- 2026年三亞中瑞酒店管理職業(yè)學(xué)院單招職業(yè)傾向性測試題庫附答案
- 2023年山東信息職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案解析
- 2023年濰坊食品科技職業(yè)學(xué)院單招職業(yè)技能考試題庫附答案解析
- 2023年廣西藍(lán)天航空職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案解析
- 2023年江蘇衛(wèi)生健康職業(yè)學(xué)院單招職業(yè)技能測試模擬測試卷附答案解析
- 湖北省十堰市竹溪縣2024年九年級化學(xué)第一學(xué)期期末達(dá)標(biāo)檢測試題含解析
- 醫(yī)院購買電腦管理制度
- 編制竣工圖合同范本
- 新22J01 工程做法圖集
- 智慧樹知到《藝術(shù)與審美(北京大學(xué))》期末考試附答案
- 2024-2025學(xué)年上海市長寧區(qū)初三一模語文試卷(含答案)
- 鋼管支撐強度及穩(wěn)定性驗算
- 全國醫(yī)療服務(wù)項目技術(shù)規(guī)范
- 人教版六年級數(shù)學(xué)下冊全冊教案
- 醫(yī)院公共衛(wèi)生事件應(yīng)急處理預(yù)案
- 智慧校園云平臺規(guī)劃建設(shè)方案
評論
0/150
提交評論