




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第8單元異常與文件任務8.1猜數(shù)游戲任務8.2主干課程詞語圖學習目標知識目標技能目標素質(zhì)目標
理解異常的概念,掌握捕獲并處理異常的方法。
掌握raise語句和assert語句。
了解自定義異常的方法。
掌握文件夾的創(chuàng)建、刪除等操作。
掌握與文件路徑相關(guān)的操作。
了解文件打開操作模式及其含義。
掌握文件讀取和寫入的相關(guān)函數(shù)的使用方法。
能夠在程序編寫過程中捕獲并處理異常。
能夠根據(jù)需求在程序編寫過程中使用raise語句或assert語句拋出并處理異常。
能夠根據(jù)需要自定義異常,并配合raise語句拋出并處理異常。
能夠創(chuàng)建、刪除文件夾。
能夠?qū)ξ募窂竭M行獲取、拆分和拼接等操作。
能夠從文件中讀取數(shù)據(jù)。
能夠向文件中寫入數(shù)據(jù)。
培養(yǎng)標準化的編碼規(guī)范能力。
培養(yǎng)創(chuàng)新能力以及分析問題和解決問題的能力。
培養(yǎng)團隊意識和溝通能力。教學內(nèi)容任務8.1猜數(shù)游戲一、任務描述
使用海龜作圖庫turtle實現(xiàn)猜數(shù)游戲,在彈出的對話框中輸入猜測的數(shù)字。如果輸入數(shù)字太大則提示“遺憾,太大了!”如果輸入數(shù)字太小則提示“遺憾,太小了!”;如果猜中則提示“預測{}次,你猜中了!”,需要給出猜測的次數(shù);如果輸入的不是整數(shù)則提示“輸入內(nèi)容必須為整數(shù)!”。運行效果如圖所示。
二、相關(guān)知識1.錯誤與異常概述程序中也會遇到各種各樣的問題,最常見的問題便是語法錯誤。語法錯誤:是指開發(fā)人員編寫了不符合Python語法格式的代碼所引起的錯誤。含有語法錯誤的程序運行后會拋出異常。a=int(input("請輸入一個整數(shù):"))if(a%5==0)print('此數(shù)字為5的倍數(shù)!')缺少冒號在PyCharm中運行上述代碼后,結(jié)果輸出區(qū)顯示了如下錯誤信息:C:\install\Anaconda3\python.exeD:/workspace/chapter09/test.pyFile"D:/workspace/chapter09/test.py",line2if(a%5==0)^SyntaxError:invalidsyntax錯誤所在行號錯誤類型錯誤信息錯誤具體位置二、相關(guān)知識一段語法格式正確的Python代碼在運行時產(chǎn)生的錯誤稱為邏輯錯誤。a=[3,4,6,7,4,3]foriinrange(7):print(a[i],end='')C:\install\Anaconda3\python.exeD:/workspace/chapter09/test.py346743Traceback(mostrecentcalllast):File"D:/workspace/chapter09/test.py",line3,in<module>print(a[i],end='')IndexError:listindexoutofrange二、相關(guān)知識若異常不被處理,默認會導致程序崩潰而終止運行。程序運行期間檢測到的錯誤稱為異常。二、相關(guān)知識所有的異常類都繼承自基類BaseException。BaseException類中包含4個子類,其中子類Exception是大多數(shù)常見異常類的父類。二、相關(guān)知識Exception中常見的子類及其描述如下表所示。二、相關(guān)知識異常類型含義AssertionError當assert關(guān)鍵字后的條件為假時,程序運行會停止并拋出AssertionErrorSyntaxError語法錯誤FileNotFoundError未找到指定文件或目錄AttributeError訪問的對象屬性不存在IndexError索引超出序列范圍KeyError字典中查找一個不存在的關(guān)鍵字NameError嘗試訪問一個未聲明的變量TypeError不同類型數(shù)據(jù)之間的無效操作ZeroDivisionError除法運算中除數(shù)為0二、相關(guān)知識2.異常處理
可以使用try-except語句捕獲異常。try-except還可以與else、finally組合使用以實現(xiàn)強大的異常處理功能。(1)try-except
捕獲異常try:
可能產(chǎn)生異常的代碼塊except[(Error1,Error2,...)[ase]]:
處理異常的代碼塊1except[(Error3,Error4,...)[ase]]:
處理異常的代碼塊2except
[Exception]:
處理其他異常解釋器優(yōu)先執(zhí)行try子句中的代碼。若try子句未產(chǎn)生異常,則忽略except子句中的代碼。若try子句產(chǎn)生異常,則忽略try子句的剩余代碼,轉(zhuǎn)而執(zhí)行except子句中的代碼。如果程序發(fā)生的異常經(jīng)try捕獲并由except塊處理完成,程序可以繼續(xù)運行try:a=int(input("輸入被除數(shù):"))b=int(input("輸入除數(shù):"))c=a/bprint("您輸入的兩個數(shù)相除的結(jié)果是:",c)except(ValueError,ArithmeticError):print("程序發(fā)生了數(shù)字格式異常、算術(shù)異常之一")except:print("未知異常")print("程序繼續(xù)運行")輸入被除數(shù):a程序發(fā)生了數(shù)字格式異常、算術(shù)異常之一程序繼續(xù)運行二、相關(guān)知識每種異常類型都提供了如下屬性和方法args:返回異常的錯誤編號和描述字符串。str(e):返回異常信息,但不包括異常信息的類型。repr(e):返回較全的異常信息,包括異常信息的類型。try:1/0exceptExceptionase:#輸出異常的錯誤編號和詳細信息print(e.args)print(str(e))print(repr(e))('divisionbyzero',)divisionbyzeroZeroDivisionError('divisionbyzero',)二、相關(guān)知識else子句與try-except語句連用時,其中的代碼會在try子句未出現(xiàn)異常時執(zhí)行。try:
可能出錯的語句......except:
出錯后的執(zhí)行語句else:
未出錯時的執(zhí)行語句二、相關(guān)知識(2)try-except-else捕獲異常try:result=20/int(input('請輸入除數(shù):'))print(result)exceptValueError:print('必須輸入整數(shù)')exceptArithmeticError:print('算術(shù)錯誤,除數(shù)不能為0')else:print('沒有出現(xiàn)異常')print("繼續(xù)運行")finally子句與try-except語句連用時,無論try-except是否捕獲到異常,finally子句中的代碼都要執(zhí)行。try:
可能出錯的語句......except:
出錯后的執(zhí)行語句finally:
無論是否出錯都會執(zhí)行的語句二、相關(guān)知識(3)try-except-finally捕獲異常try:a=int(input("請輸入
a
的值:"))print(20/a)except:print("發(fā)生異常!")else:print("運行else塊中的代碼")finally:print("運行finally塊中的代碼")二、相關(guān)知識3.拋出異常(1)raise語句:raise語句后可以添加具體的異常類,從而引發(fā)相應的異常。raise[exceptionName[(reason)]]raise:單獨一個raise語句raise異常類名稱:raise后帶一個異常類名稱raise異常類名稱(描述信息):引發(fā)異常輸出異常的描述信息raise語句引發(fā)的異常通常用try-except異常處理結(jié)構(gòu)來捕獲并進行處理。try:a=input("輸入一個數(shù):")#判斷用戶輸入的是否為數(shù)字if(nota.isdigit()):raiseValueError("a必須是數(shù)字")exceptValueErrorase:print("引發(fā)異常:",repr(e))二、相關(guān)知識(2)assert語句:
assert斷言語句用于判定一個表達式是否為真,如果表達式為True,不做任何操作,否則引發(fā)AssertionError異常。age=16
assertage>=18,'年齡必須大于18歲'表達式是assert語句的判定對象,參數(shù)通常是一個自定義異常或顯示異常描述信息的字符串。二、相關(guān)知識assertexpression[,arguments]ifnotexpression:raiseAssertionError[(arguments)]Python允許程序開發(fā)人員自定義異常。自定義異常類的方法很簡單,只需創(chuàng)建一個類,讓它繼承Exception類或其它異常類即可。classMyselfError(Exception):
pass#pass表示空語句,用于保證程序結(jié)構(gòu)的完整性二、相關(guān)知識4.自定義異常try:
pass
raiseMyselfError("出錯了?。?!")exceptMyselfErrorase:
print(e)二、相關(guān)知識定義一個檢測用戶上傳圖片格式的異常類FileTypeError,在FileTypeError類的構(gòu)造方法中調(diào)用其父類的__init__()方法并將異常信息作為參數(shù)。classFileTypeError(Exception):
def__init__(self,err='僅支持jpg/png/bmp格式'):
super().__init__(err)file_name=input("請輸入上傳圖片的名稱(包含格式):")try:
iffile_name.split(".")[1]in["jpg","png","bmp"]:
print("上傳成功!")
else:
raiseFileTypeError()exceptExceptionaserror:
print(error)三、任務分析
要實現(xiàn)本任務,首先需要隨機生成1~100的整數(shù),然后彈出提示框提示用戶輸入猜測的數(shù)字。如果輸入的為非整數(shù),需要做異常處理。由于猜數(shù)游戲通常需要多次嘗試才能猜中,所以需要用循環(huán)語句。數(shù)字猜中后需要輸出預測次數(shù),所以需要定義一個變量來記錄猜測的次數(shù)。四、任務實現(xiàn)(1)在PyCharm中,選擇“File”→“NewProject…”,在彈出的對話框中將項目命名為“chapter08”,單擊“Create”按鈕,創(chuàng)建新項目。(2)在PyCharm中,右擊左側(cè)列表中的項目名稱“chapter08”,選擇“New”→“PythonFile”,在彈出的對話框中將文件命名為“8-1猜數(shù)游戲.py”,按“Enter”鍵,進入代碼編輯界面。importrandomimportturtleturtle.hideturtle() #隱藏海龜turtle.title("猜數(shù)游戲") #設(shè)置標題turtle.color('red') #設(shè)置畫筆顏色ft=("宋體",30) #設(shè)置字體和字號N=0#定義猜數(shù)次數(shù)的變量Set_number=random.randint(0,100) #生成隨機數(shù)(3)在新建文件中完成代碼基礎(chǔ)框架的搭建。導入庫,除了導入海龜作圖庫turtle,還要導入可能用到的random庫,用于生成隨機數(shù)。設(shè)置窗體標題,隱藏海龜,設(shè)置畫筆顏色,設(shè)置字體和字號,定義記錄猜測次數(shù)的變量,隨機生成一個0~100的整數(shù)。四、任務實現(xiàn)(4)在彈出的對話框中提示用戶輸入數(shù)據(jù)。turtle庫中用于輸入數(shù)據(jù)的函數(shù)有textinput()和numinput()。numinput()函數(shù)在接收到非數(shù)字時會直接提示,但提示信息不夠友好,故在此使用textinput()函數(shù)結(jié)合int()轉(zhuǎn)換函數(shù),再配合異常處理進行提示。try:#try-except語句用于實現(xiàn)異常處理Guess_number=int(turtle.textinput("猜數(shù)游戲","請輸入猜測的數(shù):"))N=N+1except(NameError,ValueError):#捕捉NameError、ValueError兩種異常turtle.write("輸入內(nèi)容必須為整數(shù)!",align='center',font=ft)Guess_number=int(turtle.textinput("猜數(shù)游戲","請重新輸入猜測的數(shù):"))N=N+1#猜測次數(shù)加1四、任務實現(xiàn)(5)比較輸入的數(shù)字與隨機生成的數(shù)字,若不相等則判斷是大還是小,這里采用raise語句拋出異常并使用try-except語句進行異常處理,之后再次輸入新的數(shù)字,進入下一輪循環(huán)判斷。while(Guess_number!=Set_number):try:ifGuess_number>Set_number:raiseException("遺憾,太大了!")elifGuess_number<Set_number:raiseException("遺憾,太小了!")exceptExceptionaserror:turtle.clear()turtle.write(str(error),align='center',font=ft)try:Guess_number=int(turtle.textinput("猜數(shù)游戲","請輸入猜測的數(shù):"))N=N+1except(NameError,ValueError):turtle.clear()turtle.write("輸入內(nèi)容必須為整數(shù)!",align='center',font=ft)Guess_number=int(turtle.textinput("猜數(shù)游戲","請重新輸入猜測的數(shù):"))N=N+1四、任務實現(xiàn)(6)循環(huán)結(jié)束表示已經(jīng)猜中數(shù)字,輸出預測次數(shù)。turtle.clear()turtle.write("預測{}次,你猜中了!".format(N),align='center',font=ft)turtle.mainloop()任務8.2主干課程名稱詞云圖一、任務描述
詞云圖在Python世界里實現(xiàn)起來很簡單,一起來探究一下。某研究項目對120所高職院校的大數(shù)據(jù)技術(shù)專業(yè)的主干課程名稱進行收集,存儲在5個文本文件中(file1.txt、file2.txt、file3.txt、file4.txt、file5.txt)。請將這5個文本文件合并成一個文件,并對主干課程名稱進行統(tǒng)計分析然后繪制詞云圖,效果如圖所示。
二、相關(guān)知識1.文件概述Python對文件的操作有很多種,大致分為以下兩類。創(chuàng)建、刪除、修改、設(shè)置權(quán)限等操作:作用于文件本身,屬于系統(tǒng)級操作。寫入、讀取等操作:文件常用操作,作用于文件的內(nèi)容,屬于應用級操作。
其中,對文件的系統(tǒng)級操作功能單一,比較容易實現(xiàn),可以借助Python中的標準庫(如os庫、sys庫等),并調(diào)用庫中的指定函數(shù)來實現(xiàn)。二、相關(guān)知識2.sys庫sys庫提供的函數(shù)和變量,用于操控Python的運行時環(huán)境。變量/函數(shù)說明sys.argv獲取命令行參數(shù)表,該列表中的第一個元素表示程序自身所在的路徑sys.version獲取Python解釋器的版本信息sys.path獲取庫的搜索路徑,該變量的初始值為環(huán)境變量PYTHONPATH的值sys.platform返回操作系統(tǒng)平臺的名稱sys.exit()退出當前程序,可為該函數(shù)傳遞參數(shù),以設(shè)置返回值或退出信息,正常退出時返回值為0二、相關(guān)知識importsysprint('輸出argv變量值:')print(sys.argv)print('輸出version變量值:')print(sys.version)print('輸出path變量值:')print(sys.path)print('輸出platform變量值:')print(sys.platform)輸出argv變量值:['D:/workspace/chapter08/test.py']輸出version變量值:3.9.6(default,Apr132021,15:08:03)[MSCv.191664bit(AMD64)]輸出path變量值:['D:\\workspace\\chapter08',……'C:\\install\\Anaconda3\\lib……']輸出platform變量值:Win64exit()函數(shù):退出當前程序。importsyssys.exit('程序退出!')print('繼續(xù)運行此行代碼')二、相關(guān)知識3.os庫以及文件/目錄操作os庫用于處理文件和目錄等操作,如新建文件夾、刪除文件、重命名文件、獲取文件修改時間等。函數(shù)說明os.remove()刪除文件os.rename()重命名文件/文件夾os.walk()生成目錄樹下的所有文件名os.chdir()改變目錄os.mkdir()/makedirs()創(chuàng)建目錄/多層目錄os.rmdir()/removedirs()刪除目錄/多層目錄os.listdir()列出指定目錄中的文件列表,獲取文件夾下的文件os.getcwd()獲取當前工作目錄os.chmod()改變目錄權(quán)限os.path.basename()去掉目錄路徑,返回文件名os.path.dirname()去掉文件名,返回目錄路徑os.path.join()將分離的各部分組合成一個路徑名os.path.split()返回(dirname(),basename())元組os.path.splitext()返回(filename,extension)元組os.path.getatime()\ctime()\mtime()返回最近訪問時間/創(chuàng)建時間/修改時間os.path.getsize()返回文件大小os.path.exists()判斷路徑是否存在os.path.isabs()是否為絕對路徑os.path.isdir()是否為目錄os.path.isfile()是否為文件二、相關(guān)知識(1)文件重命名:os.rename()函數(shù)用于文件或文件夾的重命名,待命名的文件或文件夾必須已存在,否則解釋器會報錯。importosos.rename("file.txt","new_file.txt")(2)目錄操作:os.mkdir()函數(shù)用于創(chuàng)建目錄,os.path.exists()用來判斷目錄是否存在。importospath=input("請輸入要創(chuàng)建的目錄:")ifos.path.exists(path):#判斷目錄是否存在print("\""+path+"\"已存在!")else:os.mkdir(path)#創(chuàng)建目錄print("目錄創(chuàng)建成功!")創(chuàng)建目錄二、相關(guān)知識刪除目錄:內(nèi)置庫shutil中的rmtree()函數(shù)可以刪除目錄。importosimportshutilprint(os.path.exists("D:/test")) #第1次判斷目錄是否存在并輸出結(jié)果shutil.rmtree("D:/test") #刪除目錄print(os.path.exists("D:/test")) #第2次判斷目錄是否存在并輸出結(jié)果獲取目錄的文件列表:os庫的listdir()函數(shù)用于獲取文件夾下的文件或文件夾名稱的列表。importospath=r'D:\workspace'print(os.listdir(path))二、相關(guān)知識(3)文件路徑操作:os庫提供用于檢測路徑是否為絕對路徑的isabs()函數(shù),以及將相對路徑轉(zhuǎn)換為絕對路徑的abspath()函數(shù)。importospath=r'D:\workspace'print(os.path.isabs(path)) #判斷path是否為絕對路徑并輸出結(jié)果print(os.path.isabs("main.py"))print(os.path.abspath("main.py")) #將相對路徑轉(zhuǎn)換成絕對路徑并輸出結(jié)果獲取當前路徑:os庫中的getcwd()函數(shù)用于獲取當前工作目錄。importosprint(os.getcwd()) #輸出當前路徑print(os.listdir(os.getcwd())) #輸出目錄下的所有文件檢測相對路徑和絕對路徑二、相關(guān)知識路徑的拆分與拼接:os.path.split(path)將路徑拆分為“(目錄路徑,文件名)”,返回的是元組os.path.join(path1,path2,...)將參數(shù)中的各path進行組合類型。importosprint(os.path.split('D:\\pythontest\\ostest\\Hello.py'))print(os.path.split('.'))print(os.path.split('D:\\pythontest\\ostest\\'))print(os.path.split('D:\\pythontest\\ostest'))print(os.path.join('D:\\pythontest','ostest'))print(os.path.join('D:\\pythontest\\ostest','hello.py'))print(os.path.join('D:\\pythontest\\b','D:\\pythontest\\a'))二、相關(guān)知識4.文件操作
文件的應用級操作可以分為3步,即打開文件,對文件做讀寫操作,關(guān)閉文件,這3個步驟的順序不能打亂。一個文件,必須在打開之后才能對其進行操作,并且在操作結(jié)束之后將其關(guān)閉。file_name:表示待打開文件的文件名。buffering:對文件操作時是否使用緩沖區(qū)encoding:表示文件的編碼格式。mode:表示文件的打開模式。(1)打開和關(guān)閉文件:open()函數(shù)用于打開文件,該函數(shù)調(diào)用成功會返回一個文件對象。close()函數(shù)關(guān)閉文件。二、相關(guān)知識file=open(file_name[,mode='r'[,buffering=-1[,encoding=None]]])常用的文件打開模式有r、w、a、b、+,這些模式的含義分別如下:文件打開模式含義r以只讀的方式打開文件,默認值。w以只寫的方式打開文件。a以追加的方式打開文件。b以二進制方式打開文件。+以更新的方式打開文件。二、相關(guān)知識文件打開模式可搭配使用,如下表所示為常用的搭配。二、相關(guān)知識open()函數(shù)會創(chuàng)建file對象,file對象擁有很多函數(shù)。二、相關(guān)知識序號常用函數(shù)名描述1file.close()關(guān)閉文件。關(guān)閉后文件不能再進行讀寫操作2file.flush()刷新文件內(nèi)部緩沖區(qū),直接把內(nèi)部緩沖區(qū)的數(shù)據(jù)寫入文件,而不是被動等待輸出緩沖區(qū)寫入3file.read([size])從文件讀取指定的字節(jié)數(shù),如果未指定或size值為負數(shù)則讀取所有內(nèi)容4file.readline([size])讀取整行,包括“\n”字符5file.readlines([sizeint])讀取所有行并以列表返回,若碰到結(jié)束符EOF,則返回空字符串6file.seek(offset[,whence])移動文件讀取指針到指定位置7file.tell()返回文件當前讀取指針位置8file.truncate([size])從文件的首行首字符開始截斷,截斷文件為size個字符。若省略size表示從當前位置截斷;截斷之后后面的所有字符被刪除。Windows系統(tǒng)下的換行符為2個字符9file.write(str)將字符串str寫入文件,返回的是寫入的字符數(shù)10file.writelines(sequence)向文件寫入一個字符串列表sequence,如果需要換行則要自己加入換行符close()方法用于關(guān)閉文件,該方法沒有參數(shù),直接調(diào)用即可。文件對象.close()二、相關(guān)知識file=open('test.txt','r') #以只讀方式打開文件file.close() #關(guān)閉文件file.read([size])參數(shù)size表示設(shè)置的讀取數(shù)據(jù)的字節(jié)數(shù),若該參數(shù)缺省,則一次讀取指定文件中的所有數(shù)據(jù)。read()方法可以從指定文件中讀取指定數(shù)據(jù)二、相關(guān)知識(2)從文件中讀取數(shù)據(jù)file=open('test.txt','r’)#以只讀方式打開文件print('讀取兩個字節(jié)數(shù)據(jù)')print(file.read(2)) #讀取兩個字節(jié)數(shù)據(jù)并輸出file.close()file1=open('test.txt','r’)#以只讀方式打開文件print('讀取全部數(shù)據(jù):')print(file1.read()) #讀取全部數(shù)據(jù)并輸出file1.close()#關(guān)閉文件每執(zhí)行一次readline()方法便會讀取文件中的一行數(shù)據(jù)。readline()方法可以從指定文件中讀取一行數(shù)據(jù),其語法格式如下:二、相關(guān)知識file.readline([size])file=open('test.txt','r’)#以只讀方式打開文件print('讀取一行數(shù)據(jù)')print(file.readline()) #讀取一行數(shù)據(jù)并輸出print('讀取一行數(shù)據(jù)的前10個字符')print(file.readline(10)) #讀取一行數(shù)據(jù)的前10個字符并輸出file.close()readlines()方法在讀取數(shù)據(jù)后會返回一個列表,該列表中的每個元素對應著文件中的每一行數(shù)據(jù)。readlines()方法可以一次讀取文件中的所有數(shù)據(jù),其語法格式如下:二、相關(guān)知識file.readlines()file=open('test.txt','r',encoding='utf-8')#以只讀方式打開文件print('讀取文件中的數(shù)據(jù)')print(file.readlines()) #讀取文件中的數(shù)據(jù)并輸出file.close() #關(guān)閉文件read()(參數(shù)缺省時)和readlines()方法都可一次讀取文件中的全部數(shù)據(jù),但這兩種操作都不夠安全。因為計算機的內(nèi)存是有限的,若文件較大,read()和readlines()的一次讀取便會耗盡系統(tǒng)內(nèi)存。為了保證讀取安全,通常多次調(diào)用read()方法,每次讀取size字節(jié)的數(shù)據(jù)。二、相關(guān)知識通過write()方法向文件中寫入數(shù)據(jù),其語法格式如下。參數(shù)str表示要寫入的字符串。若字符串寫入成功,write()方法返回本次寫入文件的長度。二、相關(guān)知識(3)向文件中寫入數(shù)據(jù)file.write(str)file=open('test.txt','a+',encoding='utf-8')#以追加方式打開文件print(file.write('Helloworld!'))writelines()方法用于向文件中寫入字符串序列,其語法格式如下:二、相關(guān)知識file.wirtelines([sequence])file=open('test.txt','a+',encoding='utf-8')#以追加方式打開文件file.writelines(['\nHelloworld!','Python'])tell()方法用于獲取當前文件讀寫的位置,其語法格式如下:二、相關(guān)知識(4)文件的定位讀取file.tell()file=open('test.txt','r',encoding='utf-8')#以只讀方式打開文件print(file.read(10))#讀取文件中的前10個字符并輸出print(file.tell())#獲取文件當前的讀寫位置并輸出seek()方法用于設(shè)置當前文件讀寫位置,其語法格式如下:offset:表示偏移量,即讀寫位置需要移動的字節(jié)數(shù);from:用于指定文件的讀寫位置,該參數(shù)的取值有:0、1、2,其中0表示在開始位置讀寫;1表示在當前位置讀寫;2表示在末尾位置讀寫。二、相關(guān)知識file.seek(offset[,from])file=open('test.txt','r',encoding='utf-8')#以只讀方式打開文件print('文件讀取位置移動到開始位置偏移100個字節(jié)')file.seek(100,0) #從開始位置移動100個字節(jié)print('讀取100個字節(jié)')print(file.read(100)) #讀取100個字節(jié)并輸出file.close()三、任務分析
wordcloud庫是詞云展示第三方庫,以詞語為基本單位,通過圖形可視化的方式,更加直觀和藝術(shù)的展示文本。要使用該庫,首先使用“pipinstallwordcloud”命令安裝。
在使用wordcloud庫時,要先導入wordcloud庫,然后使用wordcloud.WordCloud()函數(shù)創(chuàng)建一個詞云對象。可以指定詞云對象的字體、圖片大小以及背景色等。WordCloud()函數(shù)的參數(shù)列表如表所示。三、任務分析參數(shù)描述舉例width指定詞云對象生成圖片的寬度,默認為400像素。w=wordcloud.WordCloud(width=600)height指定詞云對象生成圖片的高度,默認為200像素。w=wordcloud.WordCloud(height=400)min_font_size指定詞云對象中的最小字號,默認為4號。w=wordcloud.WordCloud(min_font_size=10)max_font_size指定詞云對象中的最大字號,根據(jù)高度自動調(diào)節(jié)。w=wordcloud.WordCloud(max_font_size=20)font_step指定詞云對象中字號的步進間隔,默認為1。w=wordcloud.WordCloud(font_step=2)font_path指定文本文件的路徑,默認為None。w=wordcloud.WordCloud(font_path="msyh.ttc")max_words指定詞云對象顯示的最大單詞數(shù)量,默認為200。w=wordcloud.WordCloud(max_words=20)stop_words指定詞云對象的排除詞列表,即不顯示的單詞列表。w=wordcloud.WordCloud(stop_words="Python")mask指定詞云對象形狀,默認為長方形,需要使用imread()函數(shù)。fromscipy.mscimportimreadmk=imread("pic.png")w=wordcloud.WordCloud(mask=mk)background_color指定詞云對象圖片的背景顏色,默認為黑色。w=wordcloud.WordCloud(background_color="white")三、任務分析
通過WordCloud()函數(shù)創(chuàng)建的詞云對象常用的函數(shù)如下。w.generate():向詞云對象中加載文本,如w.generate("PythonandWordCloud")。w.to_file(filename):將詞云對象輸出為圖像文件,可使用PNG或JPG格式,如w.to_file("outfile.png")
通過詞云對象的函數(shù)生成詞云圖時需要加載文本,本任務中的文本分布在5個文件中,所以需要將5個文件進行合并,可以先創(chuàng)建一個新文件,然后將5個文件的內(nèi)容復制到新文件中,涉及文件的讀取和寫入。四、任務實現(xiàn)(1)在PyCharm中,選擇“View”→“ToolWindows”→“Terminal”命令,打開“Terminal”工具,輸入“pipinstallwordcloud”命令,按“Enter”鍵后開始下載并安裝wordcloud庫。(2)在PyCharm中,右擊左側(cè)列表中的項目名稱“chapter08”,選擇“New”→“PythonFile”,在彈出的對話框中將文件命名為“8-2大數(shù)據(jù)技術(shù)專業(yè)主干課程詞云圖.py”,按“Enter”鍵,進入代碼編輯界面。(3)在新建文件中導入庫,除了海龜作圖庫turtle,還有wordcloud詞云圖庫。importturtleimportwordcloud四、任務實現(xiàn)(4)將5個文件合并成一個文件,使用try-except語句處理文件操作時可能出現(xiàn)的異常,文件讀取、寫入操作結(jié)束后需要關(guān)閉文件對象。#合并文件errstr=‘’ #定義變量errstr用于存儲文件合并過程中的錯誤信息try: #使用try-except-finally結(jié)構(gòu)處理文件讀取異常#以寫模式創(chuàng)建或打開文件對象file,如果參數(shù)對應的文件不存在則創(chuàng)建文件,否則從頭開始寫入
file=open("maincources.txt",mode='w+',encoding='utf-8')
foriinrange(1,6):#循環(huán)讀取5個文件的內(nèi)容,并寫入?yún)?shù)對應的文件
try:
filename='file'
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年浙江省建筑安全員《B證》考試題庫
- 《公共政策學》題庫及答案 2
- 西安信息職業(yè)大學《商業(yè)倫理》2023-2024學年第二學期期末試卷
- 2024-2025學年山東省聊城市高唐縣第二中學高三上學期12月月考歷史試卷
- 武漢船舶職業(yè)技術(shù)學院《R語言與數(shù)據(jù)可視化》2023-2024學年第二學期期末試卷
- 湖南財經(jīng)工業(yè)職業(yè)技術(shù)學院《斜視弱視學》2023-2024學年第二學期期末試卷
- 2025青海省安全員《C證》考試題庫
- 濰坊理工學院《經(jīng)濟統(tǒng)計學》2023-2024學年第二學期期末試卷
- 臨夏現(xiàn)代職業(yè)學院《數(shù)字信號處理A》2023-2024學年第二學期期末試卷
- 平頂山學院《安全類專業(yè)寫作》2023-2024學年第二學期期末試卷
- 中醫(yī)藥膳專題講座培訓課件
- 物業(yè)消防安全管理培訓【共54張課件】
- 空心杯電機基礎(chǔ)知識
- DL-T+5839-2021土石壩安全監(jiān)測系統(tǒng)施工技術(shù)規(guī)范
- 歷年交管12123駕照學法減分復習題庫帶答案下載
- 人教鄂教版-科學-三年級下冊-知識點
- 2024-2034年中國注射用賴氨匹林行業(yè)市場競爭格局及投資前景展望報告
- 供應鏈可持續(xù)采購實踐
- 菌菇智慧方艙栽培及食用菌菌包中心生產(chǎn)基地項目可行性研究報告
- 生物工程畢業(yè)設(shè)計開題報告
- 園林垃圾處理政策解讀
評論
0/150
提交評論