版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
任務(wù)25
打開(kāi)和關(guān)閉文件程序設(shè)計(jì)基礎(chǔ)(Python語(yǔ)言)CONTENTS目錄01任務(wù)背景與目標(biāo)02文件基礎(chǔ)知識(shí)介紹03TXT打開(kāi)與讀取案例04任務(wù)測(cè)試與總結(jié)任務(wù)背景與目標(biāo)01一、任務(wù)背景數(shù)據(jù)是數(shù)字中國(guó)、智慧城市的核心要素,智慧物流、現(xiàn)代通信等領(lǐng)域均依賴數(shù)據(jù)運(yùn)轉(zhuǎn)。建立規(guī)范的文件體系是數(shù)據(jù)應(yīng)用的基礎(chǔ),而正確操作文件(打開(kāi)、查看、關(guān)閉)
是數(shù)據(jù)處理的必備技能。本任務(wù)通過(guò)圖書館配送機(jī)器人“小@”的提示語(yǔ)配置文檔、日志文件等場(chǎng)景,學(xué)習(xí)文件操作的基本方法。二、任務(wù)目標(biāo)能區(qū)分文本文件和二進(jìn)制文件的存儲(chǔ)形式;1.掌握文件的概念與分類知道通過(guò)open()、close()函數(shù)及with
塊語(yǔ)句打開(kāi)和關(guān)閉文件的方法;2.掌握文件打開(kāi)、關(guān)閉操作;了解read()、next()
等文件讀取的方法3.了解文件讀取方法文件基礎(chǔ)知識(shí)介紹02一、文件的概念與分類1.文件:存儲(chǔ)在計(jì)算機(jī)硬盤上的信息集合,是組織和存儲(chǔ)信息的基本單位(如照片、成績(jī)表等)。2.文件分類(按數(shù)據(jù)組織形式):文本文件:以字符編碼(如ANSI、UTF-8)存儲(chǔ)數(shù)據(jù),由有序字符組成,通常以換行符('\n')分行;擴(kuò)展名為.txt、.log等,可用記事本編輯。二進(jìn)制文件:以二進(jìn)制形式存儲(chǔ)數(shù)據(jù),每個(gè)字節(jié)的意義由文件格式?jīng)Q定;包含圖像、音視頻、可執(zhí)行程序等,無(wú)法用記事本直接編輯。圖6-1
打開(kāi)查看文本文件內(nèi)容圖6-2記事本打開(kāi)查看pythonw.exe二、文件操作基礎(chǔ)2.文件基礎(chǔ)操作:(1)打開(kāi)文件:
作用:用open()函數(shù)打開(kāi)文件并創(chuàng)建文件對(duì)象,
語(yǔ)法:open(file,mode='r',encoding=None)
主要參數(shù):file:文件路徑(當(dāng)前目錄可直接寫文件名,其他目錄需完整路徑);mode:打開(kāi)模式(見(jiàn)表);encoding:編碼類型(僅文本文件,如UTF-8、GBK)。1.操作流程:
打開(kāi)文件→創(chuàng)建文件對(duì)象→操作文件(讀/寫等)→關(guān)閉文件模式說(shuō)明r讀模式(默認(rèn)),文件不存在則拋異常w寫模式,文件存在則清空內(nèi)容a追加模式,不覆蓋原有內(nèi)容b二進(jìn)制模式(可與其他模式組合,如
'rb')+讀寫模式(可與其他模式組合,如
'r+')示例:fp1=open('robot_log.log','w+')(讀寫模式打開(kāi)當(dāng)前目錄文件)fp2=open(r'f:/hints.txt','r')(只讀模式打開(kāi)指定目錄文件)二、文件操作基礎(chǔ)2.文件基礎(chǔ)操作:(2)關(guān)閉文件:
作用:用文件對(duì)象方法close()方法關(guān)閉文件;
用with語(yǔ)句自動(dòng)管理文件(推薦):
優(yōu)勢(shì):即使發(fā)生異常,也能保證文件正確關(guān)閉。示例:withopen(file,mode)asfp:#在此塊中通過(guò)fp操作文件,退出塊后自動(dòng)關(guān)閉
TXT打開(kāi)與讀取案例03【案例25-1】查看配送機(jī)器人小@的提示語(yǔ)文件“hint.txt”的內(nèi)容一、案例描述
學(xué)校圖書館的配送機(jī)器人小@啟動(dòng)時(shí)會(huì)向大家展示友好的提示,具體提示語(yǔ)內(nèi)容在文件“hint.txt”中,請(qǐng)打開(kāi)該文件,并用文件對(duì)象的read()方法顯示文件內(nèi)容,注意操作后要關(guān)閉文件。二、操作步驟詳解1.打開(kāi)文件用open()函數(shù)以只讀模式打開(kāi)“hint.txt”;2.讀取并輸出調(diào)用文件對(duì)象的read()方法讀取內(nèi)容并輸出;3.關(guān)閉文件用close()方法關(guān)閉文件;2.
迭代讀取文件在with塊中用next(fp)
迭代讀?。ㄌ^(guò)第一行,輸出第二行)。1.
打開(kāi)文件用“withopen(...)asfp”打開(kāi)文件,創(chuàng)建自動(dòng)管理的文件對(duì)象;三、代碼示例及顯示結(jié)果代碼示例:#方法1:open()與close()fp1=open('hint.txt','r')print(fp1.read())fp1.close()#方法2:with塊
withopen(r'f:\project6\hint.txt','r')asfp:next(fp)#跳過(guò)第一行
print(next(fp))#輸出第二行
圖6-3
記事本查看hint.txt文件圖6-4
程序運(yùn)行結(jié)果四、案例總結(jié):文件打開(kāi)和讀取方法總結(jié)01open()用打開(kāi)文件并創(chuàng)建對(duì)象,需指定路徑和模式;02read()一次性讀取文件全部?jī)?nèi)容;。03close()操作后必須關(guān)閉文件以保存修改;04with語(yǔ)句自動(dòng)管理文件資源,推薦用于文件操作;05next()按行迭代讀取文件內(nèi)容,適合處理大文件。任務(wù)測(cè)試與總結(jié)06一、選擇題1.以下關(guān)于文本文件和二進(jìn)制文件的描述,正確的是?(
)A.文本文件只能存放字符數(shù)據(jù)B.二進(jìn)制文件按內(nèi)存存儲(chǔ)形式原樣保存C.二進(jìn)制文件不能存放字符數(shù)據(jù)D.文本文件讀寫速度更快2.下列關(guān)于文件操作的說(shuō)法,錯(cuò)誤的是?(
)A.open()函數(shù)打開(kāi)文件后需用close()關(guān)閉B.with語(yǔ)句可自動(dòng)關(guān)閉文件C.模式'r'表示只讀,文件不存在則拋異常D.二進(jìn)制文件操作需指定encoding參數(shù)
二、填空題1.文本文件每行通常以______結(jié)尾;二進(jìn)制文件以______________形式存儲(chǔ)數(shù)據(jù)。2.以只讀方式打開(kāi)二進(jìn)制文件的模式是_________;以追加方式打開(kāi)文本文件的模式是__________。AD‘\n’二進(jìn)制‘r’‘a(chǎn)’程序設(shè)計(jì)基礎(chǔ)(Python語(yǔ)言)任務(wù)26
讀取和寫入文件CONTENTS目錄01任務(wù)背景與目標(biāo)02文件對(duì)象的常用方法03TXT寫入與讀取案例04文件操作訓(xùn)練體驗(yàn)05任務(wù)測(cè)試與總結(jié)任務(wù)背景與目標(biāo)01一、任務(wù)背景完善的數(shù)據(jù)和全面的信息是明智決策的基礎(chǔ)。圖書館配送機(jī)器人小@的服務(wù)、智慧校園的運(yùn)轉(zhuǎn)都依賴數(shù)據(jù)管理。本任務(wù)通過(guò)處理小@的提示語(yǔ)配置文件和日志文件,學(xué)習(xí)文本文件的讀取、寫入操作,掌握文件數(shù)據(jù)的安全管理方法。二、任務(wù)目標(biāo)掌握write()、writelines()
向文件寫入數(shù)據(jù)的兩種方法;1.掌握向文件寫入數(shù)據(jù)的方法掌握文件的覆蓋寫入和追加寫入的區(qū)別及應(yīng)用;2.掌握覆蓋寫入和追加寫入及區(qū)別;掌握read()、readlines()
兩種文件內(nèi)容讀取的方法。3.掌握文件讀取方法文件對(duì)象的常用方法02一、文件對(duì)象的常用方法Python通過(guò)文件對(duì)象的方法提供了豐富的文件操作。常用方法如下:方法說(shuō)明read([size])讀取文件內(nèi)容,size為字符數(shù)(文本)或字節(jié)數(shù)(二進(jìn)制),省略時(shí)讀取全部?jī)?nèi)容readline()讀取文本文件的一行內(nèi)容readlines()按行讀取全部?jī)?nèi)容,返回每行組成的列表write(s)將字符串
s寫入文件writelines(s)將字符串列表
s寫入文件(每項(xiàng)一行)tell()返回文件指針當(dāng)前位置seek(offset,[whence])移動(dòng)文件指針到指定位置(whence:0-文件頭,1-當(dāng)前位置,2-文件尾)close()寫入緩沖區(qū)內(nèi)容,關(guān)閉文件并釋放資源TXT寫入與讀取案例03【案例26-1】創(chuàng)建小@的提示語(yǔ)配置文件“hint.txt”一、案例描述
為配送機(jī)器人小@配置啟動(dòng)提示語(yǔ):“小@將為您服務(wù)!”和“我能為您傳送圖書!”,需將兩條提示語(yǔ)寫入文件并確認(rèn)內(nèi)容正確。
二、操作步驟詳解1.存儲(chǔ)數(shù)據(jù)存儲(chǔ)提示語(yǔ)到字符串變量s;2.只寫模式打開(kāi)文件以只寫模式打開(kāi)文件“hint.txt”且返回文件對(duì)象;3.數(shù)據(jù)寫入文件用文件對(duì)象的write()方法將s寫入文件;5.
讀取文件內(nèi)容確認(rèn)用with語(yǔ)句、只讀模式打開(kāi)文件,執(zhí)行readlines()方法,讀取內(nèi)容顯示確認(rèn)。4.
關(guān)閉文件執(zhí)行件對(duì)象的close()方法關(guān)閉文件;三、代碼示例及顯示結(jié)果代碼示例:#定義提示語(yǔ)字符串(含換行符)
s='小@將為您服務(wù)!\n我能為您傳送圖書!\n'#寫入文件
fp=open('hint.txt','w',encoding="ANSI")fp.write(s)#寫入字符串
fp.close()#關(guān)閉文件
#驗(yàn)證內(nèi)容
withopen('hint.txt','r',encoding="ANSI")asfp:lines=fp.readlines()#按行讀取全部?jī)?nèi)容
#輸出讀取內(nèi)容確認(rèn)forlineinlines:print(line)圖6-7程序運(yùn)行結(jié)果圖6-8查看hint.txt文件四、案例總結(jié):簡(jiǎn)單文件寫入方法總結(jié)01write()方法用于寫入字符串,需手動(dòng)添加換行符\n;02encoding參數(shù)處理含漢字的文件時(shí)需指定(如ANSI、UTF-8);03close()方法必須調(diào)用以確保內(nèi)容寫入磁盤;04with語(yǔ)句自動(dòng)管理文件關(guān)閉,推薦用于文件操作;05readlines()方法適合一次性讀取所有行,返回列表便于逐行處理。
文件操作訓(xùn)練體驗(yàn)
04【訓(xùn)練26-1】調(diào)整小@的提示語(yǔ)設(shè)置一、案例描述
小@配送中還需要發(fā)出提示語(yǔ)“小@運(yùn)行中,請(qǐng)勿觸摸或阻擋!”,請(qǐng)將該提示語(yǔ)存入配置文件“hint.txt”(可以改寫、追加兩種方式處理)。二、操作步驟詳解1.定義數(shù)據(jù)定義新提示語(yǔ)字符串new_hint;2.追加模式打開(kāi)寫入以
'a'模式打開(kāi)文件,用write()方法寫入;3.覆蓋模式打開(kāi)寫入4.
打開(kāi)文件確認(rèn)用記事本打開(kāi)文件,對(duì)比兩次的結(jié)果。以
'w'模式打開(kāi)文件,用write()寫入;任務(wù)測(cè)試與總結(jié)05一、選擇題1.關(guān)于文件操作,下列說(shuō)法錯(cuò)誤的是?(
)
A.open()用于打開(kāi)文件B.文件需先打開(kāi)后使用C.close()會(huì)刪除磁盤上的文件D.使用后需用close()關(guān)閉文件2.下列關(guān)于文件打開(kāi)模式的描述,不正確的是?(
)
A.'r'為只讀模式B.'w'為寫入模式,覆蓋原有內(nèi)容C.'a'為追加模式,文件指針在開(kāi)頭D.with語(yǔ)句可自動(dòng)關(guān)閉文件
二、填空題1.Python中打開(kāi)文件用__________函數(shù),關(guān)閉文件用__________方法,或用__________語(yǔ)句自動(dòng)管理。2.with語(yǔ)句打開(kāi)文件后,無(wú)需顯式調(diào)用__________方法關(guān)閉文件。CCopen()close()withclose()THEEND謝謝程序設(shè)計(jì)基礎(chǔ)(Python語(yǔ)言)任務(wù)27
操作文件(一)
CSV文件操作CONTENTS目錄01任務(wù)背景與目標(biāo)02深入認(rèn)識(shí)CSV文件、基于字典接口操作CSV文件03基于字典接口備份文件案例04任務(wù)測(cè)試與總結(jié)任務(wù)背景與目標(biāo)01一、任務(wù)背景
文本文件可存儲(chǔ)機(jī)器人的提示語(yǔ)信息,日志文件則更適于存為CSV、Excel等表格型文件。
本任務(wù)大家會(huì)在完成校園機(jī)器人的運(yùn)行日志、任務(wù)記錄等文件的打開(kāi)、輸出和數(shù)據(jù)的簡(jiǎn)單處理中,掌握CSV文件的操作方法。二、任務(wù)目標(biāo)理解CSV文件的數(shù)據(jù)存儲(chǔ)格式;理解CSV對(duì)數(shù)據(jù)記錄的表達(dá);1.CSV文件的存儲(chǔ)原理掌握用csv.DictReader、csv.DictWriter等對(duì)象實(shí)現(xiàn)CSV文件讀寫的方法;2.掌握基于字典接口讀寫CSV認(rèn)識(shí)CSV及字典接口02一、CSV文件存儲(chǔ)數(shù)據(jù)1.CSV:存儲(chǔ)用逗號(hào)分隔的數(shù)據(jù)的文本文件。CSV文件常用于電子表格和數(shù)據(jù)庫(kù)數(shù)據(jù)的導(dǎo)入和導(dǎo)出,
可以用記事本程序、WPS表格或EXCEL等打開(kāi)。2.CSV文件結(jié)構(gòu)直觀,節(jié)省存儲(chǔ)空間,很適合數(shù)據(jù)交換和存儲(chǔ)。圖6-9
用記事本查看robots_info.csv二、CSV文件的讀寫方法
2.基于字典接口讀寫CSV文件:
(1)讀操作
這種方法通過(guò)字段名(fieldnames)的定義將每行為一條數(shù)據(jù)記錄映射成字典,進(jìn)而可通過(guò)字段名訪問(wèn)字典中特定的數(shù)據(jù)項(xiàng),作字典操作。讀CSV文件可用csv.DictReader接口,其fieldnames參數(shù)若省略則用文件首行數(shù)據(jù)充當(dāng)。importcsvfieldnames=['機(jī)器人ID','名稱','型號(hào)','制造商','購(gòu)買日期','保修期(月)','狀態(tài)']withopen('robots_info.csv','r',newline='',encoding='utf-8')ascsvfile:#打開(kāi)文件reader=csv.DictReader(csvfile,fieldnames)#指定fieldnames,建reader接口print(reader.fieldnames)#顯示reader對(duì)象采用的字段名字典forrowinreader:#print(row)#row是一個(gè)字典,鍵是列名,值是對(duì)應(yīng)的數(shù)據(jù)print(row['機(jī)器人ID']+','+row['名稱']+','+row['狀態(tài)'])print(reader.line_num)#顯示reader數(shù)據(jù)處理到哪一行程序示例說(shuō)明csv.DictReader的數(shù)據(jù)迭代每次處理一行,數(shù)據(jù)均為字典,可選取字段處理,提升數(shù)據(jù)的可讀性。csv.DictReader的line_num為已讀入的行數(shù),可反饋數(shù)據(jù)讀取的進(jìn)度。圖6-12運(yùn)行結(jié)果二、CSV文件的讀寫方法
2.基于字典接口讀寫CSV文件:
(1)寫操作importcsvfields=['機(jī)器人ID','名稱','型號(hào)','制造商','購(gòu)買日期','保修期(月)','狀態(tài)']nRbt1={'機(jī)器人ID':'R005','名稱':'小@','型號(hào)':'Model-D','制造商':'XYZRobotics','購(gòu)買日期':'2024-08-16','保修期(月)':'24','狀態(tài)':'在役'}withopen('robots_info.csv','a',newline='',encoding='utf-8')ascsvfile:#打開(kāi)文件writer=csv.DictWriter(csvfile,fields)#創(chuàng)建文件寫接口writer.writeheader()#將fields列表寫到CSV文件首行writer.writerow(nRbt1)#字典中的數(shù)據(jù)為一條記錄寫入文件程序示例圖6-13
運(yùn)行結(jié)果說(shuō)明csv.DictWriter接口實(shí)現(xiàn)將字典型組織的數(shù)據(jù)記錄寫入CSV文件,可指定文件的數(shù)據(jù)結(jié)構(gòu),可用writeheader()方法寫入文件頭即首行數(shù)據(jù)項(xiàng)名稱,可以用writerow()、writerows()將字典中保存的一條記錄或多條記錄寫入文件?;谧值浣涌趥浞菸募咐?3【案例27-2】基于字典接口備份robots_Info.csv到同目錄下的robots_InfoBak.csv。一、案例描述robots_Info.csv中存有小@表格化的信息,現(xiàn)需用csv.DictReader、csv.DictWriter打開(kāi)查看并將數(shù)據(jù)備份到文件robots_InfoBak.csv中。二、操作步驟詳解1.查看原文件結(jié)構(gòu)查看原數(shù)據(jù)文件的字段結(jié)構(gòu);2.讀取數(shù)據(jù)用字典接口讀出數(shù)據(jù),轉(zhuǎn)為字典型加入列表;3.建備份文件寫接口創(chuàng)建且打開(kāi)備份文件,生成寫數(shù)據(jù)對(duì)象writer(備份接口);4.
備份數(shù)據(jù)到文件用writeheader()寫入列名;用writerows(records)將列表數(shù)據(jù)寫入備份文件三、代碼示例及顯示結(jié)果importcsvfieldnames=['機(jī)器人ID','名稱','型號(hào)','制造商','購(gòu)買日期','保修期(月)','狀態(tài)']records=[]#建立列表,準(zhǔn)備保存原有數(shù)據(jù)文件讀出的內(nèi)容withopen('robots_info.csv','r',newline='',encoding='utf-8')ascsvfile:#打開(kāi)原有數(shù)據(jù)文件reader=csv.DictReader(csvfile,fieldnames)#創(chuàng)建文件讀對(duì)象print(reader.fieldnames)#顯示reader對(duì)象采用的字段名字典next(reader)#跳過(guò)文件中首行字段名forrowinreader:#遍歷讀出數(shù)據(jù),存入列表recordsrecords.append(row)withopen('robots_infoBakDict.csv','w',newline='',encoding='utf-8')ascsvfile:#創(chuàng)建新文件writer=csv.DictWriter(csvfile,fieldnames)#創(chuàng)建文件寫對(duì)象writer.writeheader()#寫入文件的字段名在首行writer.writerows(records)#將列表轉(zhuǎn)存的多個(gè)數(shù)據(jù)一次性寫入新文件圖6-14
程序運(yùn)行結(jié)果四、案例總結(jié):基于字典接口操作文件總結(jié)01讀時(shí)數(shù)據(jù)轉(zhuǎn)為字典csv.DictReader將數(shù)據(jù)轉(zhuǎn)為字典,可通過(guò)列名靈活訪問(wèn);02寫時(shí)構(gòu)建規(guī)則結(jié)構(gòu)csv.DictWriter需指定fieldnames,writeheader()確保列結(jié)構(gòu)一致;03操作高效writerows()可批量寫入多行數(shù)據(jù),提升效率。任務(wù)測(cè)試與總結(jié)05一、選擇題1.以下關(guān)于CSV文件的描述,正確的是?(
)A.每一行是二維數(shù)據(jù),可用字典表示B.分隔符必須是逗號(hào)C.整個(gè)文件是二維數(shù)據(jù)D.只能存儲(chǔ)數(shù)字2.在Python中,csv.DictReader讀取CSV文件時(shí),每一行數(shù)據(jù)解析為?(
)A.列表B.字典C.元組D.集合3.csv.DictWriter的fieldnames參數(shù)作用是?(
)A.指定數(shù)據(jù)行B.指定列標(biāo)題C.指定編碼D.指定分隔符
二、填空題1.Python中處理CSV文件的標(biāo)準(zhǔn)庫(kù)是_________。2.讀取CSV為字典用csv.____________類,寫入字典到CSV用csv.______________類。
CBBCSVDictReaderDictWriter程序設(shè)計(jì)基礎(chǔ)(Python語(yǔ)言)任務(wù)27
操作文件(二)
JSON文件操作CONTENTS目錄01任務(wù)背景與目標(biāo)02認(rèn)識(shí)JSON文件和訪問(wèn)JSON文件的方法03JSON文件操作案例04任務(wù)測(cè)試與總結(jié)任務(wù)背景與目標(biāo)01一、任務(wù)背景JSON文件其簡(jiǎn)潔、易讀、跨平臺(tái)等特性,在各類技術(shù)場(chǎng)景中被廣泛應(yīng)用。
本任務(wù)通過(guò)處理校園機(jī)器人的運(yùn)行日志、任務(wù)記錄等,學(xué)習(xí)JSON文件的操作方法。。
users.json文件二、任務(wù)目標(biāo)掌握J(rèn)SON文件特殊的數(shù)據(jù)組織形式;1.JSON存儲(chǔ)數(shù)據(jù)的方式掌握使用json庫(kù)中的loads()和dumps()進(jìn)行JSON文件讀寫的方法;2.使用json標(biāo)準(zhǔn)庫(kù)讀寫JSON文件的方法認(rèn)識(shí)JSON文件和基于
JSON庫(kù)訪問(wèn)JSON文件02一、認(rèn)識(shí)JSON文件1.JSON是存儲(chǔ)JavaScript對(duì)象格式數(shù)據(jù)的文本文件,采用多層字典結(jié)構(gòu)組織數(shù)據(jù),層次清晰、易讀易寫;2.JSON是輕量級(jí)數(shù)據(jù)交換格式,被大部分編程語(yǔ)言和數(shù)據(jù)處理工具支持,適合非結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)與交換。robots_data.json的數(shù)據(jù)二、JSON文件操作JSON文件處理通過(guò)標(biāo)準(zhǔn)的json庫(kù)提供的方法,按照讀取文件、修改數(shù)據(jù)、保存修改和驗(yàn)證新數(shù)據(jù)符合JSON格式等四步實(shí)施。1.
讀取JSON文件importjson#導(dǎo)入標(biāo)準(zhǔn)庫(kù)jsonfile_path='robotBasicInfo.json'try:#用try...except語(yǔ)句執(zhí)行JSON文件訪問(wèn)withopen(file_path,'r',encoding='utf-8')asfile:data=json.load(file)#讀取文件中的數(shù)據(jù),格式不對(duì)則讀取失敗print(f"JSON文件格式正確,數(shù)據(jù)已經(jīng)取出!")exceptjson.JSONDecodeError:print(f"文件格式錯(cuò),讀取失??!")forkey,valueindata.items():#按字典方式遍歷讀出的數(shù)據(jù)
print(f"{key}--{value}")
程序示例說(shuō)明用json.loads()方法讀取JSON文件時(shí),將文件中的數(shù)據(jù)轉(zhuǎn)換為字典存入字典對(duì)象;遍歷字典對(duì)象,即查看各項(xiàng)數(shù)據(jù)的鍵和值。二、JSON文件操作
2.
向JSON文件寫入數(shù)據(jù)
用json.dump()方法可將一個(gè)Python對(duì)象編碼成JSON格式的字符串寫入JSON文件,但注意寫入后要進(jìn)行JSON數(shù)據(jù)的格式驗(yàn)證importjson#導(dǎo)入標(biāo)準(zhǔn)庫(kù)json#準(zhǔn)備字典封裝的層次型鍵值數(shù)據(jù)dataNew={'id':'004','name':'小綠','status':'配送中','location':'一樓大廳','battery':90,'task':{'taskID':'T012','destination':'圖書區(qū)9號(hào)桌位','cargo':'面包'}}file_path='robotBasicInfo.json'withopen(file_path,'w',encoding='utf-8')asfile:#以寫的方式打開(kāi)文件json.dump(dataNew,file,ensure_ascii=False,indent=4)#indent:每層縮進(jìn)字符數(shù),ensure_ascii=False確保非ASCII字符(如中文)能正確顯示
程序示例JSON文件操作案例03【案例27-4】調(diào)整校園服務(wù)機(jī)器人數(shù)據(jù)文件中的設(shè)備配置和完成任務(wù)數(shù)一、案例描述
打開(kāi)robots_data.json文件、讀出數(shù)據(jù)后,在每個(gè)機(jī)器人的“配置”項(xiàng)中添加“Comblock”項(xiàng)(值為“5G”)、將“完成任務(wù)數(shù)”項(xiàng)值加1,修改后的數(shù)據(jù)存入robots_dataModi.json文件。圖6-16查看robots_data.json的數(shù)據(jù)二、操作步驟詳解1.導(dǎo)入JSON庫(kù)導(dǎo)入json庫(kù)支持JSON文件操作,2.定義函數(shù)封裝文件操作定義函數(shù),封裝JSON文件的讀與寫,封裝中間字典型數(shù)據(jù)的處理。3.主程序調(diào)用函數(shù)調(diào)用封裝讀、改、寫入JSON文件的函數(shù),完成文件操作。三、代碼示例及顯示結(jié)果importjsonimportpandasaspdnwPz={"ComBlock":"5G"}defread_json(file_path):withopen(file_path,'r',encoding='utf-8')asfile:data=json.load(file)returndatadefmodify_data(data):forrbtindata['robots']:print(f"原id:{rbt['id']},配置:{rbt['配置']},完成任務(wù)數(shù):{rbt['完成任務(wù)數(shù)']}")rbt['配置']["ComBlock"]="5G"#修改數(shù)據(jù)rbt['完成任務(wù)數(shù)']=str(int(rbt['完成任務(wù)數(shù)'])+1)print(f"修改后的id:{rbt['id']},配置:{rbt['配置']},完成任務(wù)數(shù):{rbt['完成任務(wù)數(shù)']}")returndatadefwrite_JSON(file_path,data):withopen(file_path,'w',encoding='utf-8')asfile:json.dump(data,file,ensure_ascii=False,indent=4)#主程序data=read_json('robots_data.json')?modified_data=modify_data(data)rbt_df=convert_to_df(modified_data)print(rbt_df)write_JSON("robots_dataModi.json",modified_data)圖6-17
程序運(yùn)行結(jié)果四、案例總結(jié):JSON文件操作案例01JSON層次化的數(shù)據(jù)組織
JSON的嵌套字典結(jié)構(gòu)適合存儲(chǔ)層次化數(shù)據(jù),通過(guò)鍵名可直接訪問(wèn)和修改深層數(shù)據(jù)(如rbt['配置']['ComBlock']);02JSON文件的優(yōu)勢(shì)
JSON組織數(shù)據(jù)的方式在處理非結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù)時(shí)具有顯著優(yōu)勢(shì),特別適用于大數(shù)據(jù)和實(shí)時(shí)數(shù)據(jù)處理的應(yīng)用場(chǎng)景任務(wù)測(cè)試與總結(jié)05
一、填空題1.要將JSON格式的字符串解碼為Python對(duì)象,可以使用________________函數(shù)。2.使用________________函數(shù)可以將Python對(duì)象(如字典或列表)編碼為JSON格式的字符串。3.使用json.load()函數(shù)時(shí),需要傳入一個(gè)已打開(kāi)的________對(duì)象作為參數(shù),該函數(shù)會(huì)返回解析后的Python對(duì)象(如字典或列表)。4.要將Python對(duì)象寫入到JSON文件中,可用json庫(kù)的________________函數(shù)。json.loads()json.dumps()文件json.dumps()THEEND謝謝程序設(shè)計(jì)基礎(chǔ)(Python語(yǔ)言)任務(wù)27
操作文件(三)
Excel文件操作CONTENTS目錄01任務(wù)背景與目標(biāo)02Excel數(shù)據(jù)存儲(chǔ)方式與操作方法03Excel數(shù)據(jù)清洗與分析案例04任務(wù)測(cè)試與總結(jié)任務(wù)背景與目標(biāo)01一、任務(wù)背景
在應(yīng)用軟件開(kāi)發(fā)中,Excel文件因其靈活的數(shù)據(jù)處理能力和廣泛的用戶基礎(chǔ),被廣泛集成和應(yīng)用。
本任務(wù)通過(guò)機(jī)器人小@的工作記錄數(shù)據(jù)的處理,學(xué)習(xí)EXCEL文件的操作方法。二、任務(wù)目標(biāo)掌握Excel文件的存儲(chǔ)原理;1.Excel文件存儲(chǔ)原理掌握基于Python的Excel文件讀寫操作方法;2.讀寫操作方法;學(xué)會(huì)使用pandas庫(kù)對(duì)Excel數(shù)據(jù)進(jìn)行簡(jiǎn)單處理。3.學(xué)會(huì)數(shù)據(jù)處理Excel數(shù)據(jù)存儲(chǔ)方式02一、認(rèn)識(shí)EXCEL文件1.EXCEL工作簿文件:電子表格文件,擴(kuò)展名(.xls、.xlsx),處理(WPS表格、Excel)。2.EXCEL文件包含張表(sheet),支持公式、圖表、數(shù)據(jù)透視表等高級(jí)功能,適合復(fù)雜的數(shù)據(jù)分析和展示。圖6-19
EXCEL文件示例3.Excel文件操作:pandas庫(kù)----文件操作簡(jiǎn)便,openpyxl----專門處理,xlrd、pyexcel----能夠處理。二、操作Excel文件1.
讀文件
作用:利用read_excel()方法讀取Excel文件,返回DataFrame對(duì)象;
主要參數(shù):file:文件路徑或?qū)ο螅ū靥睿?;sheet_name:指定工作表名稱或索引(默認(rèn)0);header:作為列名的行號(hào)(默認(rèn)0,即第一行)names:列名列表,用于覆蓋從文件中讀取的列名,可省略;pandas.read_excel(file,sheet_name=0,header=0,names=None,index_col=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,na_values=None,parse_dates=False,date_parser=None,thousands=None,comment=None,skipfooter=0,convert_float=True,mangle_dupe_cols=True,**kwds)engine:解析Excel文件的引擎,可是'xlrd'、'openpyxl'或'odf'。默認(rèn)為None,Pandas將嘗試使用最合適的引擎。skiprows:要忽略的行數(shù)或需要跳過(guò)的行號(hào)列表(從0開(kāi)始計(jì)數(shù))。nrows:需要讀取的行數(shù)。usecols:要返回的列的集合(列名的列表、列范圍描述、列名篩選條件)。
格式:二、操作Excel文件1.
讀文件
importpandasaspdfile_path='robotWorkData.xlsx'#讀取指定工作表到DataFramedf=pd.read_excel(file_path,sheet_name='Records')print(df.head(2))#顯示前2行數(shù)據(jù)
程序示例圖6-20
用Pandas讀取EXCEL文件工作表結(jié)果二、操作Excel文件2.
寫文件
作用:用DataFrame對(duì)象的to_excel()方法可將其寫入EXCEL
主要參數(shù):file:文件的路徑或文件對(duì)象。sheet_name:默認(rèn)為'Sheet1',指定要寫入的工作表名稱。header:默認(rèn)為True,表示是否寫入列名。DataFrame.to_excel(file,sheet_name='Sheet1',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,startrow=0,startcol=0,engine=None,merge_cells=True,encoding=None,inf_rep='inf',verbose=True,freeze_panes=None,storage_options=None)startrow和startcol:分別默認(rèn)為0,表示開(kāi)始寫入的行號(hào)和列號(hào)columns:要寫入的列的名稱。默認(rèn)為None,即寫入所有列。index:默認(rèn)為True,表示是否寫入行索引(行號(hào))。格式:二、操作Excel文件2.
寫文件
importpandasaspddata={#創(chuàng)建機(jī)器人運(yùn)行數(shù)據(jù)'日期':['2025/1/20','2025/1/20','2025/1/20','2025/1/20','2025/1/20'],'時(shí)間':['8:00:00','8:10:00','8:15:00','8:30:00','9:00:00'],'機(jī)器人ID':['R001','R002','R001','R003','R002'],'任務(wù)類型':['送餐','送物','送餐','送物','送餐'],'起始位置':['廚房','一樓大廳','廚房','倉(cāng)庫(kù)','廚房'],
'目的地':['302房間','二樓會(huì)議室','305房間','實(shí)驗(yàn)室','201房間'],'任務(wù)狀態(tài)':['已完成','進(jìn)行中','已完成','已完成','已完成'],'耗時(shí)(分鐘)':[5,-1,6,4,7]}df=pd.DataFrame(data)#使用數(shù)據(jù)字典創(chuàng)建DataFrameprint("生成的DataFrame:");print(df)#顯示生成的DataFrameexcel_file_path='robot_data.xlsx'df.to_excel(excel_file_path,index=False,engine='openpyxl')#將DataFrame寫入Excel文件print(f"\nDataFrame已成功寫入Excel文件:{excel_file_path}")
程序示例圖6-21
用Pandas向EXCEL文件寫數(shù)據(jù)結(jié)果Excel數(shù)據(jù)清洗與分析案例03【案例27-4】
對(duì)robot_data.xlsx中的機(jī)器人工作數(shù)據(jù)進(jìn)行清洗和分析、轉(zhuǎn)存。一、案例描述
用read_excel()打開(kāi)文件、讀出數(shù)據(jù)到DataFrame中,用其豐富的方法完成數(shù)據(jù)清洗、分析和統(tǒng)計(jì),再將處理后的數(shù)據(jù)用df.to_excel()做另存處理。圖6-22
案例27-4程序運(yùn)行結(jié)果分步展示二、操作步驟詳解1.讀取EXCEL用pd.read_excel()打開(kāi)文件、讀數(shù)據(jù)到DataFrame并顯示;2.數(shù)據(jù)清洗用dropna()刪除含缺失值的行,drop_duplicates()刪除
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年四川城市職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試參考題庫(kù)附答案詳解
- 2026中國(guó)聯(lián)通博州分公司招聘10人(新疆)考試備考試題及答案解析
- 2026年2月重慶萬(wàn)州區(qū)周家壩街道公益性崗位招聘1人筆試模擬試題及答案解析
- 2026年金華義烏市中心醫(yī)院醫(yī)共體上溪院區(qū)招聘協(xié)議工作人員2人考試參考題庫(kù)及答案解析
- 2026廣東江門市臺(tái)山市市場(chǎng)監(jiān)督管理局招聘編外人員1人考試備考試題及答案解析
- 2026年甘肅警察學(xué)院引進(jìn)高層次人才16人考試參考試題及答案解析
- 2026年廣西生態(tài)工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能筆試模擬試題帶答案解析
- 護(hù)理體位擺放的培訓(xùn)與認(rèn)證
- 2026年武漢大學(xué)中南醫(yī)院勞務(wù)派遣制科研秘書招聘?jìng)淇碱}庫(kù)及完整答案詳解1套
- 2026年首都醫(yī)科大學(xué)附屬北京安貞醫(yī)院科技處科研管理人才招聘?jìng)淇碱}庫(kù)及一套完整答案詳解
- T-CDLDSA 09-2025 健身龍舞彩帶龍 龍舞華夏推廣套路技術(shù)規(guī)范
- 部編版初三化學(xué)上冊(cè)期末真題試題含解析及答案
- GB/T 19566-2025旱地糖料甘蔗高產(chǎn)栽培技術(shù)規(guī)程
- 去極端化條例解讀課件
- 光纖收發(fā)器培訓(xùn)
- 汽車減震器課件
- 水上拋石應(yīng)急預(yù)案
- 蘇州大學(xué)介紹
- 招標(biāo)公司勞動(dòng)合同范本
- 酒店消防安全應(yīng)急預(yù)案范本
- 輻射與安全培訓(xùn)北京課件
評(píng)論
0/150
提交評(píng)論