




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、全國計算機等級考試二級教程全國計算機等級考試二級教程Python語言語言程序設(shè)計程序設(shè)計(2018年版)【第第6章章】文件和數(shù)據(jù)格式化文件和數(shù)據(jù)格式化n 文件的使用: 文件打開、關(guān)閉和讀寫n 數(shù)據(jù)組織的維度:一維數(shù)據(jù)和二維數(shù)據(jù)n 一維數(shù)據(jù)的處理:表示、存儲和處理n 二維數(shù)據(jù)的處理:表示、存儲和處理n 采用CSV格式對一二維數(shù)據(jù)文件的讀寫考綱考點知識導(dǎo)圖文件的使用n 文件是存儲在輔助存儲器上的一組數(shù)據(jù)序列,可以包含任何數(shù)據(jù)內(nèi)容。概念上,文件是數(shù)據(jù)的集合和抽象。文件包括兩種類型:文本文件和二進文本文件和二進制文件制文件。文件n 文本文件一般由單一特定編碼的字符組成,如UTF-8編碼,內(nèi)容容易統(tǒng)一展
2、示和閱讀。n 二進制文件直接由比特0和比特1組成,文件內(nèi)部數(shù)據(jù)的組織格式與文件用途有關(guān)。二進制是信息按照非字符但特定格式形成的文件,例如,png格式的圖片文件、avi格式的視頻文件。文件的類型n 二進制文件和文本文件最主要的區(qū)別在于是否有統(tǒng)一的字符編碼。n 無論文件創(chuàng)建為文本文件或者二進制文件,都可以用“文本文件方式”和“二進制文件方式”打開,但打開后的操作不同。文件的類型123f=open(a.txt,rt)#t表示文本文件方式表示文本文件方式print(f.readline()f.close()全國計算機等級考試n 文本文件a.txt,采用二進制方式打開n 采用文本方式讀入文件,文件經(jīng)過編
3、碼形成字符串,打印出有含義的字符;采用二進制方式打開文件,文件被解析為字節(jié)流。文件的類型123f=open(“a.txt”,“rb”)#b表示表示二進制二進制文件文件方式方式print(f.readline()f.close()bxc8xabxb9xfaxbcxc6xcbxe3xbbxfaxb5xc8xbcxb6xbfxbcxcaxd4n Python對文本文件和二進制文件采用統(tǒng)一的操作步驟,即“打開打開-操作操作-關(guān)閉關(guān)閉”文件的打開和關(guān)閉n Python通過open()函數(shù)打開一個文件,并返回一個操作這個文件的變量,語法形式如下: = open(, )文件的打開和關(guān)閉打開模式含義r只讀模式
4、,如果文件不存在,返回異常FileNotFoundError,默認值w覆蓋寫模式,文件不存在則創(chuàng)建,存在則完全覆蓋源文件x創(chuàng)建寫模式,文件不存在則創(chuàng)建,存在則返回異常FileExistsErrora追加寫模式,文件不存在則創(chuàng)建,存在則在原文件最后追加內(nèi)容b二進制文件模式t文本文件模式,默認值+與r/w/x/a一同使用,在原功能基礎(chǔ)上增加同時讀寫功能n 打開模式使用字符串方式表示,根據(jù)字符串定義,單引號或者雙引號均可。上述打開模式中,r、w、x、b可以和b、t、+組合使用,形成既表達讀寫又表達文件模式的方式。文件的打開和關(guān)閉n 文件使用結(jié)束后要用close()方法關(guān)閉,釋放文件的使用授權(quán),語法形
5、式如下:.close()文件的打開和關(guān)閉n 新建一個文本文件a.txt,其內(nèi)容為“全國計算機等級考試”,保存在目錄PATH中,假設(shè)此時路徑PATH是Windows系統(tǒng)的D盤根目錄。打開并關(guān)閉該文件的操作過程如下。文件的打開和關(guān)閉PATH=D:f=open(PATH+a.txt,rt)print(f.readline()國家計算機等級考試f.close()print(f.readline()Traceback(mostrecentcalllast):File,line1,inprint(f.readline()ValueError:I/Ooperationonclosedfile.n 根據(jù)打開方
6、式不同,文件讀寫也會根據(jù)文本文件或二進制打開方式有所不同。文件的讀寫方法含義f.read(size=-1)從文件中讀入整個文件內(nèi)容。參數(shù)可選,如果給出,讀入前size長度的字符串或字節(jié)流f.readline(size = -1)從文件中讀入一行內(nèi)容。參數(shù)可選,如果給出,讀入該行前size長度的字符串或字節(jié)流f.readlines(hint=-1)從文件中讀入所有行,以每行為元素形成一個列表。參數(shù)可選,如果給出,讀入hint行f.seek(offset)改變當前文件操作指針的位置,offset的值:0:文件開頭; 2: 文件結(jié)尾n 如果文件不大,可以一次性將文件內(nèi)容讀入,保存到程序內(nèi)部變量中。f
7、.read()是最常用的一次性讀入文件的函數(shù),其結(jié)果是一個字符串。文件的讀寫f=open(D:/b.txt,r)s=f.read()print(s)新年都未有芳華,二月初驚見草芽。白雪卻嫌春色晚,故穿庭樹作飛花。f.close()n f.readlines()也是一次性讀入文件的函數(shù),其結(jié)果是一個列表,每個元素是文件的一行。文件的讀寫f=open(D:/b.txt,r)ls=f.readlines()print(ls)新年都未有芳華,二月初驚見草芽。n,白雪卻嫌春色晚,故穿庭樹作飛花。nf.close()n 文件打開后,對文件的讀寫有一個讀取指針,當從文件中讀入內(nèi)容后,讀取指針將向前進,再次讀
8、取的內(nèi)容將從指針的新位置開始。文件的讀寫f=open(D:/b.txt,r)s=f.read()print(s)新年都未有芳華,二月初驚見草芽。白雪卻嫌春色晚,故穿庭樹作飛花。ls=f.readlines()print(ls)f.close()n 結(jié)合讀取指針理解,上述代碼中l(wèi)s返回值為空,因為之前f.read()方法已經(jīng)讀取了文件全部內(nèi)容,讀取指針在文件末尾,再次調(diào)用f.readlines()方法已經(jīng)無法從當前讀取指針讀入內(nèi)容,因此返回結(jié)果為空。文件的讀寫n f.seek()方法能夠移動讀取指針的位置,f.seek(0)將讀取指針移動到文件開頭,f.seek(2)將讀取指針移動到文件結(jié)尾。文
9、件的讀寫f=open(D:/b.txt,r)s=f.read()print(s)新年都未有芳華,二月初驚見草芽。白雪卻嫌春色晚,故穿庭樹作飛花。f.seek(0)#將讀取指針重置到文件開頭將讀取指針重置到文件開頭ls=f.readlines()print(ls)新年都未有芳華,二月初驚見草芽。n,白雪卻嫌春色晚,故穿庭樹作飛花。nf.close()n 從文本文件中逐行讀入內(nèi)容并進行處理是一個基本的文件操作需求。文本文件可以看成是由行組成的組合類型,因此,可以使用遍歷循環(huán)逐行遍歷文件,使用方法如下:f = open(, r)for line in f: # 處理一行數(shù)據(jù)處理一行數(shù)據(jù)f.close
10、()文件的讀寫文件的讀寫1234f=open(D:/b.txt,r)forlineinf:print(line)f.close()新年都未有芳華,二月初驚見草芽。白雪卻嫌春色晚,故穿庭樹作飛花。文件的讀寫f=open(D:/c.txt,w)f.write(新年都未有芳華n)f.write(二月初驚見草芽n)f.write(白雪卻嫌春色晚n)f.write(故穿庭樹作飛花n)f.close()方法含義f.write(s)向文件寫入一個字符串或字節(jié)流f.writelines(lines)將一個元素為字符串的列表寫入文件nf.write(s)向文件寫入字符串s,每次寫入后,將會記錄一個寫入指針。該方
11、法可以反復(fù)調(diào)用,將在寫入指針后分批寫入內(nèi)容,直至文件被關(guān)閉。文件的讀寫n 上述語句運行后將在D盤目錄下生成一個文件c.txt,內(nèi)容如下。n 使用f.write(s)時,要顯式的使用n對寫入文本進行分行,如果不進行分行,每次寫入的字符串會被連接起來。新年都未有芳華二月初驚見草芽白雪卻嫌春色晚故穿庭樹作飛花文件的讀寫n f.writelines(lines)直接將列表類型的各元素連接起來寫入文件f。ls=新年都未有芳華新年都未有芳華n,二月初驚見草芽二月初驚見草芽n,白雪卻嫌春色晚白雪卻嫌春色晚n,故穿庭樹作飛花故穿庭樹作飛花nf=open(D:/c.txt,w)f.writelines(ls)f
12、.close()數(shù)據(jù)組織的維度數(shù)據(jù)組織的維度n 一組數(shù)據(jù)在被計算機處理前需要進行一定的組織,表明數(shù)據(jù)之間的基本關(guān)系和邏輯,進而形成“數(shù)據(jù)的維度”。根據(jù)數(shù)據(jù)的關(guān)系不同,數(shù)據(jù)組織可以分為:一維數(shù)據(jù)、二維數(shù)據(jù)和高維數(shù)據(jù)一維數(shù)據(jù)、二維數(shù)據(jù)和高維數(shù)據(jù)。 一維數(shù)據(jù)n 一維數(shù)據(jù)由對等關(guān)系的有序或無序數(shù)據(jù)構(gòu)成,采用線性方式組織線性方式組織,對應(yīng)于數(shù)學(xué)中數(shù)組的概念。例如:中國的直轄市列表即可表示為一維數(shù)據(jù),一維數(shù)據(jù)具有線性特點。北京、上海、天津、重慶二維數(shù)據(jù)n 二維數(shù)據(jù),也稱表格數(shù)據(jù),由關(guān)聯(lián)關(guān)系數(shù)據(jù)構(gòu)成,采用二維表格方式組織,對應(yīng)于數(shù)學(xué)中的矩陣,常見的表格都屬于二維數(shù)據(jù)。n 例如:國家統(tǒng)計局發(fā)布的居民消費價格指
13、數(shù)是二維數(shù)據(jù)二維數(shù)據(jù)指標2014年2015年2016年居民消費價格指數(shù)102101.4102食品103.1102.3104.6煙酒及用品99.4102.1101.5衣著102.4102.7101.4家庭設(shè)備用品101.2101100.5醫(yī)療保健和個人用品101.3102101.1交通和通信99.998.398.7娛樂教育文化101.9101.4101.6居住102100.7101.6每個數(shù)據(jù)為相比上年數(shù)據(jù)的標準值,即上年指標為100。高維數(shù)據(jù)n 高維數(shù)據(jù)由鍵值對類型的數(shù)據(jù)構(gòu)成,采用對象方式組織,可以多層嵌套。n 高維數(shù)據(jù)在Web系統(tǒng)中十分常用,作為當今Internet組織內(nèi)容的主要方式,高位數(shù)
14、據(jù)衍生出HTML、XML、JSON等具體數(shù)據(jù)組織的語法結(jié)構(gòu)。高維數(shù)據(jù)本書 : 第1章 : 程序設(shè)計基本方法,第2章 : Python語言基本語法元素,第3章 : 基本數(shù)據(jù)類型,第4章 : 程序的控制結(jié)構(gòu),第5章 : 函數(shù)和代碼復(fù)用,第6章 : 組合數(shù)據(jù)類型,第7章 : 文件和數(shù)據(jù)格式化,第8章 : Python計算生態(tài),第9章 : Python標準庫概覽,第10章 : Python第三方庫概覽,第11章 : Python第三方庫縱覽,第12章 : 考試指導(dǎo),附錄 : 附錄1234567一維數(shù)據(jù)的處理一維數(shù)據(jù)的表示n 一維數(shù)據(jù)是最簡單的數(shù)據(jù)組織類型,由于是線性結(jié)構(gòu),在Python語言中主要采用列
15、表形式表示。例如:中國的直轄市數(shù)據(jù)可以采用一個列表變量表示。ls=北京北京,上海上海,天津天津,重慶重慶print(ls)北京北京,上海上海,天津天津,重慶重慶一維數(shù)據(jù)的存儲n 一維數(shù)據(jù)的文件存儲有多種方式,總體思路是采用特殊字符分隔各數(shù)據(jù)。常用存儲方法包括4種。n (1)采用空格分隔元素,例如:北京 上海 天津 重慶n (2)采用逗號分隔元素,例如:北京,上海,天津,重慶一維數(shù)據(jù)的存儲n (3)采用換行分隔包括,例如:北京上海天津重慶n (4)其他特殊符號分隔,以分號分隔為例,例如:北京;上海;天津;重慶一維數(shù)據(jù)的存儲n 逗號分割的存儲格式叫做CSV格式格式(Comma-Separated
16、Values,即逗號分隔值),它是一種通用的、相對簡單的文件格式,在商業(yè)和科學(xué)上廣泛應(yīng)用,大部分編輯器都支持直接讀入或保存文件為CSV格式n 一維數(shù)據(jù)保存成CSV格式后,各元素采用逗號分隔,形成一行。從Python表示到數(shù)據(jù)存儲,需要將列表對象輸出為CSV格式以及將CSV格式讀入成列表對象一維數(shù)據(jù)的存儲n 列表對象輸出為CSV格式文件方法如下,采用字符串的join()方法最為方便。1234ls=北京北京,上海上海,天津天津,重慶重慶f=open(city.csv,w)f.write(,.join(ls)+n)f.close()北京,上海,天津,重慶一維數(shù)據(jù)的處理n 對一維數(shù)據(jù)進行處理首先需要從
17、CSV格式文件讀入一維數(shù)據(jù),并將其表示為列表對象。1234f=open(city.csv,r)ls=f.read().strip(n).split(,)f.close()print(ls)北京北京,上海上海,天津天津,重慶重慶二維數(shù)據(jù)的處理n 二維數(shù)據(jù)由多條一維數(shù)據(jù)構(gòu)成,可以看成是一維數(shù)據(jù)的組合形式。因此,二維數(shù)據(jù)可以采用二維列表來表示,即列表的每個元素對應(yīng)二維數(shù)據(jù)的一行,這個元素本身也是列表類型,其內(nèi)部各元素對應(yīng)這行中的各列值二維數(shù)據(jù)的處理ls = 指標, 2014年, 2015年, 2016年, 居民消費價格指數(shù), 102, 101.4, 102, 食品, 103.1, 102.3, 10
18、4.6, 煙酒及用品, 994, 102.1, 101.5, 衣著, 102.4, 102.7, 101.4,家庭設(shè)備用品, 101.2, 101, 100.5, 醫(yī)療保健和個人用品, 101.3, 102, 101.1, 交通和通信, 99.9, 98.3, 98.7, 娛樂教育文化, 101.9, 101.4, 101.6, 居住, 102, 100.7, 101.6, 二維數(shù)據(jù)的存儲n 二維數(shù)據(jù)由一維數(shù)據(jù)組成,用CSV格式文件存儲。CSV文件的每一行是一維數(shù)據(jù),整個CSV文件是一個二維數(shù)據(jù)。n 二維列表對象輸出為CSV格式文件方法如下,采用遍歷循環(huán)和字符串的join()方法方法相結(jié)合。1
19、234#ls代表二維列表,此處省略代表二維列表,此處省略f=open(cpi.csv,w)forrowinls:f.write(,.join(row)+n)f.close()二維數(shù)據(jù)的處理n 對二維數(shù)據(jù)進行處理首先需要從CSV格式文件讀入二維數(shù)據(jù),并將其表示為二維列表對象。借鑒一維數(shù)據(jù)讀取方法,從CSV文件讀入數(shù)據(jù)的方法如下。123456f=open(cpi.csv,r)ls=forlineinf:ls.append(line.strip(n).split(,)f.close()print(ls)二維數(shù)據(jù)的處理n 程序執(zhí)行后二維列表對象ls的內(nèi)容如下。指標,2014年,2015年,2016年,
20、居民消費價格指數(shù),102,101.4,102,食品,103.1,102.3,104.6,煙酒及用品,994,102.1,101.5,衣著,102.4,102.7,101.4,家庭設(shè)備用品,101.2,101,100.5,醫(yī)療保健和個人用品,101.3,102,101.1,交通和通信,99.9,98.3,98.7,娛樂教育文化,101.9,101.4,101.6,居住,102,100.7,101.6二維數(shù)據(jù)的處理n 二維數(shù)據(jù)處理等同于二維列表的操作,與一維列表不同,二維列表一般需要借助循環(huán)遍歷實現(xiàn)對每個數(shù)據(jù)的處理,基本代碼格式如下:for row in ls: for item in row:
21、二維數(shù)據(jù)的處理n 對二維數(shù)據(jù)進行格式化輸出,打印成表格形狀123456#此處略去從此處略去從CSV獲取數(shù)據(jù)到二維列表獲取數(shù)據(jù)到二維列表lsforrowinls:line=foriteminrow:line+=:10t.format(item)print(line)實例解析:國家財政數(shù)據(jù)趨勢演算國家財政數(shù)據(jù)趨勢演算n 國家統(tǒng)計局每年會公開許多數(shù)據(jù),比如國民經(jīng)濟核算指標等。國家統(tǒng)計局公布的大部分數(shù)據(jù)都以二維表格形式展現(xiàn),然而,藏在這些數(shù)據(jù)背后的價值要比表格所展現(xiàn)的更多。國家財政數(shù)據(jù)趨勢演算n 以國家財政收支的公開數(shù)據(jù)為例,這里展示如何利用Python挖掘數(shù)據(jù)變化的規(guī)律。將從網(wǎng)上獲取的公開信息存為f
22、inance.csv文件指標2000年2015年2016年全部收入13395.2152269.2159605中央收入6989.269267.272365.6地方收入64064全部支出15886.5175877.8187755.2中央支出5519.925542.227403.9地方支出10366.7150335.6160351.4國家財政數(shù)據(jù)趨勢演算n 由個別數(shù)據(jù)預(yù)測規(guī)律屬于數(shù)值分析的內(nèi)容,可以通過線性回歸方程建立簡單模型,線性回歸方程的公式為:n X代表年份,Y代表各年份對應(yīng)的數(shù)值。Python實現(xiàn)的國家財政數(shù)據(jù)趨勢演算,根據(jù)上述三個數(shù)值計算出更多年份的可能數(shù)據(jù)。國家
23、財政數(shù)據(jù)趨勢演算實例7.1 123456789101112131415161718192021222324252627#FinancePredict.pydefparseCSV(filename):dataNames,data=,f=open(filename,r,encoding=utf-8)forlineinf:splitedLine=line.strip().split(,)if指標指標insplitedLine0:years=int(x:-1)forxinsplitedLine1:else:dataNames.append(:10.format(splitedLine0)data.ap
24、pend(float(x)forxinsplitedLine1:)f.close()returnyears,dataNames,datadefmeans(data):returnsum(data)/len(data)deflinearRegression(xlist,ylist):xmeans,ymeans=means(xlist),means(ylist)bNumerator=-len(xlist)*xmeans*ymeansbDenominator=-len(xlist)*xmeans*2forx,yinzip(xlist,ylist):bNumerator+=x*ybDenominato
25、r+=x*2b=bNumerator/bDenominatora=ymeans-b*xmeansreturna,b國家財政數(shù)據(jù)趨勢演算實例7.1 2829303132333435363738394041424344454647484950515253defcalNewData(newyears,a,b):return(a+b*x)forxinnewyearsdefshowResults(years,dataNames,newDatas):print(:60.format(國家財政收支線性估計國家財政收支線性估計)header=指標指標foryearinyears:header+=:10.format(year)print(header)forname,lineDatainzip(dataNames,newDatas):line=na
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC 15944-12:2025 EN Information technology - Business operational view - Part 12: Privacy protection requirements (PPR) on information life cycle management (ILCM) and
- 2025年6月下旬熱點新聞素材解讀+適用話題+寫作運用及事例
- 臥室紡織品市場政策分析考核試卷
- 區(qū)域會展產(chǎn)業(yè)區(qū)域合作政策優(yōu)化考核試卷
- 戰(zhàn)略合作伙伴關(guān)系評估考核試卷
- 干擾源定位技術(shù)國際合作考核試卷
- 醫(yī)藥行業(yè)市場細分與目標客戶定位策略分析考核試卷
- 2025年中國N-乙基-2-吡咯烷酮數(shù)據(jù)監(jiān)測報告
- 2025年中國CCFL遞變器數(shù)據(jù)監(jiān)測報告
- 2025年中國3,5-雙三氟甲基苯甲醛數(shù)據(jù)監(jiān)測研究報告
- 2025年 武漢市漢陽區(qū)社區(qū)干事崗位招聘考試筆試試卷附答案
- 2025年 云南省危險化學(xué)品經(jīng)營單位安全管理人員考試練習(xí)題附答案
- 美發(fā)師五級試題及答案
- Q-GDW10250-2025 輸變電工程建設(shè)安全文明施工規(guī)程
- 2024-2025學(xué)年四年級(下)期末數(shù)學(xué)試卷及答案西師大版2
- 2025-2030年中國釹鐵硼永磁材料行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030年中國高導(dǎo)磁芯行業(yè)深度研究分析報告
- 宣城市宣州區(qū)“政聘企培”人才引進筆試真題2024
- 遠程胎心監(jiān)護數(shù)據(jù)解讀
- 2025年全國法醫(yī)專項技術(shù)考試試題及答案
- 2025年寧夏銀川市中考歷史三模試卷(含答案)
評論
0/150
提交評論