Python文件讀寫與異常綜合練習(xí)_第1頁(yè)
Python文件讀寫與異常綜合練習(xí)_第2頁(yè)
Python文件讀寫與異常綜合練習(xí)_第3頁(yè)
Python文件讀寫與異常綜合練習(xí)_第4頁(yè)
Python文件讀寫與異常綜合練習(xí)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、在此處健入實(shí)驗(yàn)報(bào)告課程名稱:Python編程基礎(chǔ)與應(yīng)用實(shí)驗(yàn)學(xué)期:2019年至2020年第1學(xué)期實(shí)驗(yàn)時(shí)間:2020年4月28日專 業(yè):數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)班 級(jí):學(xué) 號(hào):姓 名: 指導(dǎo)教師:實(shí)踐一文件讀寫與異常綜合練習(xí)實(shí)踐:文件讀寫與異常綜合練習(xí)實(shí)驗(yàn)?zāi)康?熟練掌握文件的讀寫與異常處理的方法2實(shí)驗(yàn)內(nèi)容及步驟.分析問(wèn)題.編寫代碼.運(yùn)行程序.結(jié)果展示1.2.3程序運(yùn)行過(guò)程、方法和運(yùn)行結(jié)果.創(chuàng)建文件data, txt,共100000行,每行存放一個(gè)1100之間的整數(shù)。 分析:隨機(jī)生成100000個(gè)整數(shù),存放到data, txt文件中的每一行 import randomfilename = ,rzuoye

2、wenjiandata. txt”with open (filename, w) as file:for i in range (10000):file, write(str(random. randint(l, 100)+HnM)結(jié)果:在此處健入 , data.py 目 data.txt X* pyth。誨習(xí)工程 zuoye wenjian data.txt TOC o 1-5 h z 998949999088999148999287999360999432999598999675999760999886999972100001710001.編寫一個(gè)程序,提示用戶輸入其名字,用戶作出響應(yīng)后,

3、將其名字累加寫入 到文件guest, txt中,同時(shí)打印guest, txt文件記錄的名字(guest, txt記錄每 次運(yùn)行程序所寫的名字),當(dāng)輸入時(shí),輸入名字程序退出。分析:while True:name = input(“請(qǐng)輸入你的名字(按“n”退出程序):)if name = n:print(“程序結(jié)束”)breakelse:filename = zuoye/wenjian/guest.txtwith open(filename?encoding=,UTF-8N) as file:file.write(name+n)with open(filename? r, encoding=,UT

4、F-8,) as files:for line in files:print(line)結(jié)果:1/ data.py 目 guest.txt X pytho誨習(xí)工程 zuoye wenjian 目 guest.txtpppdddccc請(qǐng)輸入你的名字(按“n”退出程序):luyPPP ddd ccc3.生成一個(gè)大文件ips.txt,要求1200行,每行隨機(jī)為172.25. 254.0/24段的 ip;讀取ips. txt文件統(tǒng)計(jì)這個(gè)文件中ip出現(xiàn)頻率排1的ip;思路:.文件的寫操作. sorted函數(shù)如何對(duì)字典進(jìn)行排filename = Hzuoye/wenjian/ips. txtMwith o

5、pen (filename, w”, encoding=UTF-8) as file:for i in range(1200):file, write(172. 25. 254. +str(random, randint(0, 255) + n)with open (filename, r, encoding=UTF-8) as files: p diet = for line in files:if line in p diet:p dietline += 1else:p dietline = 1sort_ip = sorted(p diet.values(), reverse=True)

6、for ip in pdict:if p_dictipl = sort_ip|01: print(ip, pdictip)else:continue結(jié)果:同 data.py ips.txtX. python習(xí)工程 zuoye wenjian 目 ips.txt11895119078119161192811936119411195261196511197301198172.25.25

7、4.1191199212001712014.在當(dāng)前目錄新建目錄img,里面包含100個(gè)文件,100個(gè)文件名各不相同 (X4G5. png),將當(dāng)前img目錄所有以.png結(jié)尾的后綴名改為.jpg。思路:首先編寫OS的生成目錄和文件模塊,其次編寫random函數(shù)和string模塊的 應(yīng)用結(jié)合,最后編寫OS模塊的修改后綴。def gen_code(len=4):隨機(jī)生成4位驗(yàn)證碼li = random.sample(string.ascii_letters+string.digits? len)拼接為字符串return H.join(li)def c

8、reate_files():隨機(jī)生成100個(gè)驗(yàn)證碼li = gen_code() for i in range(100)創(chuàng)建目錄os-rnkdirCimg11)#生成100個(gè)文件for i in li:風(fēng)ith openCimg/1 + i + n .png? a+) as fp:passcreate_files()def modify_suffix(dirnameold_suffix new_suffix):ai ii ii:param dirname:要操作的目錄:param old_suffix:之前的后綴名:param new_suffix:新的后綴名:return:ii ii ii#

9、找出以png結(jié)尾的文件名pngfile = filter(lambda filename: filename.endswith( old_suffix) os .listdir(dirname)#分離文件名和后綴basefiles = os.path.splitext(filename)0 for filename in pngfile#文件重命名for filename in basefiles:oldname = os.path.join(dirname? filename + old_suffix)newname = os.path.join(dirname? filename + ne

10、w_suffix)os rename(oldname, newname)print(%s 重命名為%$ 成功% (oldnamenewname)modify_suffix(Mimg11 ?.png) . jpg)結(jié)果:v / img ICzLjpg 1rxy jP9 2AhKjpg 2DXHjpg 2IBM.jpg 3OqRjpg 3yFi-jpg 3Yqk.jpg 4gtTjpg 05zRjpg5.使用多個(gè)文件練習(xí):分別在當(dāng)前目錄中手動(dòng)創(chuàng)建4個(gè)文本文件,名字分別命 名為:畢業(yè)的日子.txt,最平凡處最美麗.txt,花開(kāi)如笑.txt。分別讀取每一個(gè) 文本文件,統(tǒng)計(jì)文件中的句子數(shù)量。使用異常模塊

11、來(lái)處理讀取過(guò)程中的異常。for filename in Hzuoye/wenjian/ 畢 業(yè) 的日子.txtzuoye/wenjian/ 花開(kāi)如 笑.txt:zuoye/v/enjian/最平凡處最美麗.txt1:with open(filename r) as file:count = 0comment = file.read()for i in comment:2 X 4ii ”-5:ii I ii4ii Q iit i = o or i =! or i =!count += 1prin七(filename14: +共有%d 句。11 % count)結(jié)果:C: Usersluyuehu

12、aDesktoppythonpython 練習(xí)工程D: /Download_D/ s/luyuehua/Desktop/python/python練習(xí) 工程/zuoye/wenjian/data.py 畢業(yè)的日子.txt共有9句?;ㄩ_(kāi)如笑共有5句。最平凡處最美麗.txt共有8句。1.2. 4實(shí)驗(yàn)中遇到的問(wèn)題及分析、解決過(guò)程問(wèn)題標(biāo)題(如果有,請(qǐng)?zhí)顚憳?biāo)題,沒(méi)有則刪除這小節(jié),寫“無(wú)”).問(wèn)題描述正文。.問(wèn)題分析正文。.解決方法正文。在此處健入 實(shí)踐一 python標(biāo)準(zhǔn)庫(kù)和GUI綜合練習(xí)1.3實(shí)踐:python標(biāo)準(zhǔn)庫(kù)和GUI練習(xí)實(shí)驗(yàn)?zāi)康?熟練掌握python標(biāo)準(zhǔn)庫(kù)中常用的庫(kù)函數(shù),理解它們的基本原理,會(huì)

13、運(yùn)用它們的常用 功能。.熟練運(yùn)用python的thinkter包來(lái)構(gòu)建GUI界面,掌握它的基本組件并學(xué)會(huì)運(yùn)用它們。1.3. 2實(shí)驗(yàn)內(nèi)容及步驟.分析問(wèn)題.編寫代碼.運(yùn)行程序.結(jié)果展不1.3. 3程序運(yùn)行過(guò)程、方法和運(yùn)行結(jié)果1.使用tkinter來(lái)編寫一個(gè)計(jì)算器小程序,實(shí)現(xiàn)+、二*、等基本功能。思路:.考慮用類來(lái)包裹整個(gè)計(jì)算器,用類的屬性存儲(chǔ)界面對(duì)象、數(shù)據(jù)與運(yùn)算符等。.考慮使用eval ()函數(shù)來(lái)執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值。import tkinter as tk#先有整體框架,輸入計(jì)算框,各種按鍵。class App:def _init_(self? master):#基本界面 se

14、lf.master = master#輸入組件self.initWidgets()#表達(dá)式在此處健入self.hi = Nonedef initWidgets(self):#創(chuàng)建一個(gè)輸入組件self.show = tk.Label(relief=tk.SUNKEN width=23 bg=,white, anchor=tk.W)#對(duì)該輸入組件使用pack布局self.show.pack(side=tk.TOP pady=10)p = tk.Frame(self.master)p . pack(side=tk.TOP)#定義字符串的元組names = (I, “2、,3, “4、“5、“6”,,

15、7, ”8、9、O, .二*,/, 7I ,j=,3j)#遍歷元組 for i in range(len(names):#創(chuàng)建按鈕,放入frame中b = tk.Button(p? text二namesi) 風(fēng)idth=5)b.grid(row=i/5column=i % 5)# b.pack(side=tk.LEFT, padx=0? pady=5)#為鼠標(biāo)左鍵的單擊事件綁定事件處理方法b.bind( self.click)#為鼠標(biāo)左鍵雙擊事件綁定事件處理方法if bftext11 = 31b.bind(H self.clean)#定義一個(gè)記錄輸入數(shù)字次數(shù)的變量 self.i = 0def

16、click(selfevent):#如果用戶單擊數(shù)字或點(diǎn)號(hào)if (event.widget,text, in (“0,“1、”2、,3 “4“,“5、“6、 7, 8, 9,#判斷self .i是否為。,0的話清空show【text】的值if self.i = 0:self.show,text,J = ,Hself. shovyf text11 = self. show text + event .widget ,textn self.i = self.i + 1 print(self.i)#如果用戶單擊了運(yùn)算符elif (event .widget text in-二 il*l “”,|*|

17、 “/):self. show Mtext11 = self. show text + event .v;idget text elif (event .widget utext11 = = and self. show ,text is not N one):賦值給self.hiself .hi = self. show,text,調(diào)試時(shí)使用print(self.hi)使用eval ()函數(shù)計(jì)算結(jié)果self. show text11 = str(eval(self. hi)self.hi = Noneself.i = 0def clean(selfevent):#點(diǎn)擊恢復(fù)按鈕時(shí),清空表達(dá)式,

18、計(jì)數(shù)器清空 self.hi = None self.showt-text = ,Hroot = tk.Tk()root. title (計(jì)算器”)App(root)root.mainloop()點(diǎn)擊二”后:2.使用python的tkinter編寫一個(gè)界面,例子如下:能夠通過(guò)xml標(biāo)準(zhǔn)庫(kù)讀寫xml文件:country, xml中指定國(guó)家的rank和year屬 性。country, xml結(jié)構(gòu)如下:country name=Panama”)672014213600思路:將解析xml文件的代碼封裝為類,注意界面的布局情況,可以使用Label 和Entry等界面組件的grid函數(shù)。import tki

19、nter as tkimport xml.etree.ElementTree as ET在此處健入 Iclass App:I H ii點(diǎn)擊get按鈕時(shí)根據(jù)用戶輸入的國(guó)家名判斷是否時(shí)xml文件里而存在的name,若是則返回行營(yíng)的 rank 和 year 值點(diǎn)擊set按鈕時(shí)將用戶輸入的數(shù)據(jù)按原格式存入xml文件II II IIdef _init_(selfroot):#基本界面 self.root = root#所需組件self.zujian()def zujian(self):#用標(biāo)簽label存放固定的數(shù)據(jù),用文本框entry存放可變數(shù)據(jù),并用grid固 定他們的位置# set和get用按鈕b

20、utton來(lái)創(chuàng)建,再用bind設(shè)置他們的響應(yīng)機(jī)制#國(guó)家name,tk.Label(self.roottext=country:height=lJ width=10).grid(row=0 column=0)self.el = tk.StringVar()self.ell = tk.Entry(self.root width=50J textvariable=self.el)self.ell.grid(row=0? column=l)# ranktk. Label(self. roottext=rank:11, height=lJ width=10).grid(row=l column=0)se

21、lf.e2 = tk.IntVar()self.e22 = tk.Entry(self.root, width=50? textvariable=self.e2)self.e22.grid(row=l column=l)# yeartk.Label(self.roottext=year:, height=l? width=10).grid(row=2 column=0)self.e3 = tk.IntVar()self.e33 = tk.Entry(self.root width=50J textvariable=self.e3) self e33.grid(row=2 column=l) #

22、 getb = tk. Button (root text=,get,1 height=l? width=15)b,grid(row=3 column=0)在此處健入b . bind (Button T self .click) # setc = tk. Button (root text=,set height=l width=15)c grid(row=3, column=l)c. bind(11 self .clean)def click(selfevent):#點(diǎn)擊get按鈕的響應(yīng)機(jī)制tree = ET.parse(zuoye/country.xml1) # 。:建 xml 樹(shù)rootl = tree, get root ()# 得到樹(shù)根for country in rootl. findall( 1 country* ) : # 循環(huán)迎坊子點(diǎn) country#判斷name是否和用戶輸入的一致,若一致則輸出他們的rank和year的 值if country, get ( name* ) = self .ell.get() :# 廣點(diǎn):展性name的值self.el.set(count ry.ge

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論