




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第7講文件與數(shù)據(jù)格式化(1)文件的基礎(chǔ)操作文件與目錄管理學(xué)習(xí)目標(biāo)本講要點7.1文件概述文件:操作系統(tǒng)管理和存儲數(shù)據(jù)的一種方式文件標(biāo)識:類似于程序中使用的變量,每個文件也有唯一確定的標(biāo)識,以便識別和引用文件。文件標(biāo)識的組成:路徑、主文件名、擴展名、路徑分隔符缺省路徑名:當(dāng)前目錄下的文件標(biāo)識符可以缺省路徑名,如:file.txt,表示file.txt是與當(dāng)前程序同一個目錄下的文件。7.1文件概述E:\Python38\python.exe
——Windows路徑分隔符“\”路徑主文件名擴展名路徑分隔符:Linux中使用"/",Windows中使用"\"(也兼容"/"),由于Python中的"\"常用于轉(zhuǎn)義字符,因此作為文件標(biāo)識中路徑分隔符時需要進行特殊處理:(1)用轉(zhuǎn)義字符"\\"來表示"\";(2)用"/"代替"\";(3)使用Raw字符串,格式為:r'd:\test\newfile.txt',Raw字符串不解析轉(zhuǎn)義字符,常用于文件標(biāo)識7.1文件概述E:\Python38\python.exe
——Windows路徑分隔符“\”路徑主文件名擴展名7.1文件概述文件類型:根據(jù)數(shù)據(jù)的邏輯存儲結(jié)構(gòu),文件類型分為文本文件和二進制文件。(1)文本文件:根據(jù)字符編碼保存文本數(shù)據(jù)的文件,常見字符編碼包括ASCII、UTF-8、GB2312等,可以直接使用“記事本”進行讀寫,如python源代碼文件。(2)二進制文件:保存數(shù)據(jù)的二進制代碼,將數(shù)據(jù)在內(nèi)存中的存儲形式復(fù)制到文件中。不能使用“記事本”正常讀寫,通常存儲圖片、音頻、視頻、應(yīng)用程序等數(shù)據(jù)。注意:二進制文件和文本文件這兩種類型的劃分基于數(shù)據(jù)邏輯存儲結(jié)構(gòu)而非物理存儲結(jié)構(gòu),計算機中的數(shù)據(jù)在物理層面都以二進制形式存儲。多學(xué)一招:標(biāo)準(zhǔn)文件標(biāo)準(zhǔn)文件Python的sys模塊中定義了3個標(biāo)準(zhǔn)文件,分別為:(1)stdin(標(biāo)準(zhǔn)輸入文件),對應(yīng)標(biāo)準(zhǔn)輸入設(shè)備——鍵盤(2)stdout(標(biāo)準(zhǔn)輸出文件),對應(yīng)標(biāo)準(zhǔn)輸出設(shè)備——顯示器(3)stderr(標(biāo)準(zhǔn)錯誤文件),對應(yīng)標(biāo)準(zhǔn)輸出設(shè)備——顯示器。在解釋器中導(dǎo)入sys模塊后,便可對標(biāo)準(zhǔn)文件進行操作。多學(xué)一招:標(biāo)準(zhǔn)文件標(biāo)準(zhǔn)文件importsysfile=sys.stdoutfile.write("hello")示例7.2文件的基礎(chǔ)操作7.2文件的基本操作文件的打開、關(guān)閉與讀寫是文件的基礎(chǔ)操作,任何更復(fù)雜的文件操作都離不開這些操作。7.2.1文件的打開與關(guān)閉1.打開文件——內(nèi)置函數(shù)open()語法格式:myfile=open(file,mode='r',encoding=None)myfile:自定義標(biāo)識符,是引用文件對象的變量,open()函數(shù)返回一個文件對象file:要打開的文件的標(biāo)識,文件名。mode:表示文件讀寫模式的字符串,默認(rèn)為'r',還有'w'、'a'、'b'等。encoding:設(shè)置字符編碼,默認(rèn)為None?!緟?shù)說明】完整格式:open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)7.2.1文件的打開與關(guān)閉1.打開文件——內(nèi)置函數(shù)open()【關(guān)于mode參數(shù)】模式字符的含義:r:以只讀方式打開文件(mode參數(shù)的默認(rèn)值)。readingw:只寫方式,創(chuàng)建新文件,若文件存在,則原文件被覆蓋。writinga:只寫、追加方式打開文件,文件存在則追加,不存在則創(chuàng)建新文件。appendingx:只寫、創(chuàng)建新文件,若文件存在,則報錯(exclusive—專有的)t:按文本格式讀寫文件,默認(rèn)方式。textb:以二進制形式打開文件。binary+:以讀寫模式打開文件(可讀可寫)t,b可與r,w,a,x組合使用+必須與r,w,a組合使用缺省時默認(rèn)為rt7.2.1文件的打開與關(guān)閉1.打開文件——內(nèi)置函數(shù)open()打開模式名稱描述r/rb只讀模式以只讀的形式打開文本文件/二進制文件,若文件不存在或無法找到,文件打開失敗w/wb只寫模式以只寫的形式打開文本文件/二進制文件,若文件已存在,則重寫文件,否則創(chuàng)建新文件a/ab追加模式以只寫的形式打開文本文件/二進制文件,只允許在該文件末尾追加數(shù)據(jù),若文件不存在,則創(chuàng)建新文件r+/rb+讀?。ǜ拢┠J揭宰x/寫的形式打開文本文件/二進制文件,若文件不存在,文件打開失敗
w+/wb+寫入(更新)模式以讀/寫的形式打開文本文件/二進制文件,若文件已存在,則重寫文件a+/ab+追加(更新)模式以讀/寫的形式打開文本/二進制文件,只允許在文件末尾添加數(shù)據(jù),若文件不存在,則創(chuàng)建新文件總結(jié)規(guī)律:7.2.1文件的打開與關(guān)閉file1=open('E:\\a.txt') #以只讀方式打開E盤的文本文件a.txtfile2=open('b.txt','w') #以只寫方式打開當(dāng)前目錄的文本文件b.txtfile3=open('c.txt','w+') #以讀/寫方式打開文本文件c.txtfile1=open('d.jpg','wb+') #以讀/寫方式打開二進制文件d.jpg示例1.打開文件——內(nèi)置函數(shù)open()7.2.1文件的打開與關(guān)閉若待打開的文件不存在,文件打開失敗,程序會拋出異常,并打印錯誤信息。------------------------------------------------------------------------FileNotFoundErrorTraceback(mostrecentcalllast)<ipython-input-5-23b0bb5a2ffc>in<module>---->1file1=open("b.txt")FileNotFoundError:[Errno2]Nosuchfileordirectory:'b.txt'示例1.打開文件——內(nèi)置函數(shù)open()7.2.1文件的打開與關(guān)閉2.關(guān)閉文件(1)close()方法——文件對象的內(nèi)置方法file.close()示例關(guān)閉文件的方法有2種:close()方法、with語句實現(xiàn)文件的自動關(guān)閉。7.2.1文件的打開與關(guān)閉2.關(guān)閉文件(2)with語句——文件自動關(guān)閉withopen('a.txt')asf:pass示例知識拓展pass語句:空語句,為了保持程序結(jié)構(gòu)完整性,起占位作用為什么要及時關(guān)閉文件?思考:為什么要及時關(guān)閉文件?1.打開的文件占用系統(tǒng)資源;2.操作系統(tǒng)為每個進程打開的文件數(shù)量是有限的;3.關(guān)閉文件能將“寫緩存”中的數(shù)據(jù)及時同步的磁盤,若程序因異常關(guān)閉,可能產(chǎn)生數(shù)據(jù)丟失。思考:為什么要及時關(guān)閉文件?7.2.2文件的讀寫Python提供了一系列讀寫文件的方法,包括讀取文件的read()、readline()、readlines()方法和寫文件的write()、writelines()方法,針對文本文件和二進制文件在讀寫時存在一定的差異,下面分別從文本文件和二進制文件角度分別介紹如何讀寫文件。7.2.2文件的讀寫(1)讀取文件——read()方法read([size]):將從文件指針位置(當(dāng)前位置)開始讀取size個字符,作為一個字符串返回。size缺省或為負數(shù)時,讀取所有字符如:read()、read(10)、read(-1)withopen('file.txt',mode='r')asf:print(f.read(2)) #讀取兩個字節(jié)的數(shù)據(jù)
print(f.read()) #讀取剩余的全部數(shù)據(jù)示例1.文本文件的讀寫7.2.2文件的讀寫(2)讀取文件——readline()方法readline():讀取整行(包括"\n"字符),將從當(dāng)前位置開始到下一個換行符號'\n'的內(nèi)容,作為一個字符串返回。readline(size):從當(dāng)前位置開始的size個字符內(nèi)的一行withopen('file.txt',mode='r',encoding='utf-8')asf:print(f.readline())#讀第1行輸出print(f.readline())#讀第2行輸出示例1.文本文件的讀寫7.2.2文件的讀寫(3)讀取文件——readlines()方法readlines():將從文件指針位置開始到文件末尾的內(nèi)容作為一個列表返回,每一行的字符串作為一個列表元素,包括換行符'\n'readlines(size):返回從當(dāng)前位置開始size個字符所在的整行,包括'\n'withopen('file.txt',mode='r',encoding='utf-8')asf:print(f.readlines())#使用readlines()方法讀取數(shù)據(jù)示例1.文本文件的讀寫7.2.2文件的讀寫注意:read()和readlines()方法都可一次讀取文件中的全部數(shù)據(jù)(參數(shù)缺省時),但因為計算機的內(nèi)存是有限的,若文件較大,read()和readlines()的一次讀取便會耗盡系統(tǒng)內(nèi)存,所以這兩種操作都不夠安全。為了保證讀取安全,通常多次調(diào)用read(size)、readline()方法,采用循環(huán)遍歷的方法讀取。7.2.2文件的讀寫文件遍歷一:for循環(huán)f=open('file.txt')forlineinf:print(line,end='')#循環(huán)遍歷讀取文件內(nèi)容f.close()1.文本文件的讀寫文件遍歷二:readline()withopen('file.txt')asf:whileTrue:
line=f.readline()ifnotline:#返回值為''時退出循環(huán)
breakprint(line,end='')文件遍歷三:read()withopen('file.txt')asf:whileTrue:s=f.read(20)#讀取指定字符數(shù)
ifnots:#返回值為''時退出循環(huán)
breakprint(s,end='')7.2.2文件的讀寫(4)寫文件——write()方法write(xstring):在當(dāng)前位置寫入xstring指定的字符串,返回本次寫入的數(shù)據(jù)的字符數(shù)。寫文件,open()函數(shù)的mode可以用w、a、a+等string="實訓(xùn)7:文件與數(shù)據(jù)格式化的應(yīng)用"withopen('write_file.txt',mode='w',encoding='utf-8')asf:size=f.write(string)
#寫入字符串
print(size)
#打印字節(jié)數(shù)示例1.文本文件的讀寫7.2.2文件的讀寫(5)寫文件——writelines()方法writelines(xlist):將列表中的數(shù)據(jù)合并為一個字符串寫入到當(dāng)前位置。該方法沒有返回值(xlist也可以是一個字符串)。xlist=["\n一、實訓(xùn)目的\n","1、了解計算機中文件的類型\n","2、掌握文件的基本操作,熟練管理文件與目錄\n","3、了解數(shù)據(jù)維度的概念,掌握常見的數(shù)據(jù)格式."]withopen('write_file.txt',mode='a',encoding='utf-8')asf:f.writelines(xlist)
#寫入字符串示例1.文本文件的讀寫多學(xué)一招:字符與編碼文本文件支持多種編碼方式,不同編碼方式下字符與字節(jié)的對應(yīng)關(guān)系不同,常見的編碼方式以及字符與字節(jié)的對應(yīng)關(guān)系如表所示。編碼方式語言字符數(shù)字節(jié)數(shù)ASCII中文12英文11UTF-8中文13英文11Unicode中文12英文12GBK中文12英文111.文本文件的讀寫7.2.3文件的定位讀寫read()方法第1次讀取了2個字符,第2次從第3個字符開始讀取了剩余字符。1.文本文件的讀寫文件指針——當(dāng)前位置在文件的一次打開與關(guān)閉之間進行的讀寫操作是連續(xù)的,程序總是從上次讀寫的位置繼續(xù)向下進行讀寫操作。每個文件對象都有一個稱為“文件讀寫位置”的屬性,該屬性會記錄當(dāng)前讀寫的位置,也稱文件指針文件打開時讀寫位置默認(rèn)為0,即在文件首部。7.2.3文件的定位讀寫1.文本文件的讀寫Python提供了一些獲取與定位文件讀寫位置的方法,以實現(xiàn)文件的定位讀寫。tell()——獲取文件當(dāng)前的讀寫位置。seek()——定位文件的讀寫位置。7.2.3文件的定位讀寫1.文本文件的讀寫(6)tell()方法——返回文件當(dāng)前的讀寫位置,以字節(jié)為單位,每個漢字占用幾個字節(jié)與編碼方式相關(guān)withopen('file.txt')asf:print(f.tell()) #獲取文件讀寫位置
print(f.read(5)) #利用read()方法移動文件讀寫位置
print(f.tell()) #再次獲取文件讀寫位置示例7.2.3文件的定位讀寫說明:read(5)讀取文本文件時,以字符為單位移動指針,GBK編碼一個漢字是2字節(jié)(對于二進制文件,總是以字節(jié)為單位移動指針)。1.文本文件的讀寫seek(offset):將文件指針移動到第n+1個字節(jié)(注意中文漢字的定位異常)offset:表示偏移量,即讀寫位置需要移動的字節(jié)數(shù)。返回值:seek()方法調(diào)用成功后會返回當(dāng)前讀寫位置(7)seek()方法——可控制文件的讀寫位置7.2.3文件的定位讀寫1.文本文件的讀寫2.seek()方法withopen('file.txt')asf:print(f.tell()) #獲取文件讀寫位置
print(f.read(5)) #利用read()方法移動文件讀寫位置
print(f.tell()) #再次獲取文件讀寫位置示例7.2.3文件的定位讀寫1.文本文件的讀寫二進制文件讀寫與文本文件讀寫基本相同,不同之處在于:(1)open()函數(shù)打開文件時,mode參數(shù)設(shè)置為rb、wb、ab、ab+、等,以二進制模式也可以打開文本文件,不能設(shè)置encoding參數(shù);(2)讀寫時均以字節(jié)為單位,讀取返回值為bytes對象,寫入的數(shù)據(jù)也必須是bytes對象;(3)seek()方法可以相對于當(dāng)前位置和文件尾設(shè)置偏移量。7.2.2文件的讀寫2.二進制文件的讀寫withopen('write_file.txt',mode='rb')asf:f.seek(3)print(f.read(3)) #讀取3個字節(jié),并輸出示例二進制文件的寫操作7.2.2文件的讀寫2.二進制文件的讀寫withopen('write_file3.txt',mode='wb')asf:#下句將一個字符串轉(zhuǎn)換成指定字符編碼的bytes對象
xbytes=bytes('第七講',encoding='utf-8')
f.write(xbytes)
#寫一個字節(jié)序列對象示例seek(offset[,from]):將文件指針移動到第n+1個字節(jié)offset:表示偏移量,即讀寫位置需要移動的字節(jié)數(shù)。from:用于給offset定義一個參數(shù),表示要從哪個位置開始偏移,可取值為0、1、2,默認(rèn)為0,文本文件只能是0。0:表示文件開頭。1:表示使用當(dāng)前讀寫位置(二進制文件)。2:表示文件末尾(二進制文件)。返回值:seek()方法調(diào)用成功后會返回當(dāng)前讀寫位置(3)seek()方法的不同7.2.3文件的定位讀寫2.二進制文件的讀寫seek()定位二進制文件:withopen('file.txt','rb')asf:f.seek(5,0)f.seek(3,1)示例7.2.3文件的定位讀寫2.二進制文件的讀寫7.3文件與目錄管理文件操作通常都會涉及到目錄操作,對于用戶而言,文件和目錄以不同的形式展現(xiàn),但對計算機而言,目錄是一種特殊的文件,它存儲當(dāng)前目錄中的子目錄和文件的相關(guān)信息。Python的os模塊提供了目錄操作的函數(shù)。利用這些函數(shù)可以實現(xiàn)文件刪除、重命名,創(chuàng)建/刪除目錄、獲取當(dāng)前目錄、更改默認(rèn)目錄、獲取目錄列表等操作。7.3文件與目錄管理管理文件與目錄獲取當(dāng)前目錄——os.getcwd()更改默認(rèn)目錄——os.chdir(路徑名)創(chuàng)建/刪除目錄——os.mkdir(目錄名)/os.rmdir(目錄名)獲取目錄列表——os.listdir(目錄/路徑)刪除文件——os.remove(文件名)文件重命名——os.rename(原文件名,新文件名)7.3文件與目錄管理7.3文件與目錄管理1.獲取當(dāng)前目錄——os.getcwd()importos
print(os.getcwd())#F:\pythons2.更改默認(rèn)目錄——os.chdir(路徑名)importosprint(os.getcwd())#F:\pythonsos.chdir("f:/eclipse")print(os.getcwd())#f:\eclipse3.創(chuàng)建/刪除目錄——os.mkdir(目錄名)/os.rmdir(目錄名)os.mkdir('test/txt')os.rmdir('test/txt')7.3文件與目錄管理4.獲取目錄名列表——os.listdir(目錄/路徑)importosprint(os.listdir())print(os.listdir('test'))5.刪除文件——os.remove(文件名)os.remove('write_file.txt')7.4精彩實例本實例要求編寫程序,實現(xiàn)一個具備備份文件與文件夾功能的備份工具。問題討論:1.如何實現(xiàn)文件復(fù)制?讀取原文件---寫到目標(biāo)文件2.使用文本文件還是二進制文件形式?7.4.1信息安全策略——文件備份7.4.1信息安全策略——文件備份拷貝文件的函數(shù)定義:deffile_backup(source,target):
#source是要備份的文件名,target為目標(biāo)文件夾
file_back=source.split('/')[-1]
withopen(source,mode='rb')asfile_data:#以二進制讀的形式打開源文件
new_path=target+'/'+file_back#生成目標(biāo)文件名
#創(chuàng)建新文件
,以只讀的方式打開
withopen(new_path,'wb')asfile_back:#以二進制寫的形式打開目標(biāo)文件
#遍歷備份源文件內(nèi)容到新文件中
whileTrue:
data=file_data.read(1024)#每次讀取1024個字節(jié)
ifnotdata:
break
file_back.write(data)定義源文件復(fù)制函數(shù):backupfile(源文件,目標(biāo)目錄)定義目錄備份函數(shù):backup(源路徑,目標(biāo)目錄)——遞歸函數(shù),如果源路徑是文件則是調(diào)用backupfile(),如果源路徑是目錄,則遍歷它的子目錄,對子目錄文件遞歸復(fù)制7.4.1信息安全策略——文件備份本實例要求編寫程序,實現(xiàn)用戶注冊、登錄、修改密碼、注銷功能(要求程序使用文件存儲用戶的賬戶信息)。7.4.2用戶賬戶管理7.4.2用戶賬戶管理用戶信息文件:infor.txt,用于存放用戶信息,每個用戶信息包含賬號與密碼[{'id':'lucky','pwd':'123'},{}]定義類型轉(zhuǎn)換函數(shù):convert_data(),將文件中的數(shù)據(jù)讀取出來,轉(zhuǎn)換成字典列表查詢用戶:從字典中查詢,用戶輸入賬號,如果存在則失敗提示;如果不存在則輸入密碼寫入文件:將賬號和密碼添加到字典列表,將字典轉(zhuǎn)換成字符串寫入文件7.6本章小結(jié)第7講文件與數(shù)據(jù)格式化(2)數(shù)據(jù)維度與數(shù)據(jù)格式化學(xué)習(xí)目標(biāo)本講要點7.5數(shù)據(jù)維度與數(shù)據(jù)格式化計算機處理數(shù)據(jù)時,為了提高處理效率,總是將數(shù)據(jù)按一定的格式來組織。數(shù)據(jù)的組織格式表明數(shù)據(jù)之間的基本關(guān)系和邏輯,進而形成“數(shù)據(jù)組織維度”。根據(jù)數(shù)據(jù)關(guān)系的關(guān)聯(lián)參數(shù)個數(shù)的不同,可將數(shù)據(jù)組織分為一維數(shù)據(jù)、二維數(shù)據(jù)和多維(高維)數(shù)據(jù)。具有1個關(guān)聯(lián)參數(shù)的一組線性數(shù)據(jù),如:一維列表一維元組集合等一維數(shù)據(jù)具有2個關(guān)聯(lián)參數(shù)的表格數(shù)據(jù),如:矩陣二維列表二維元組二維數(shù)組二維數(shù)據(jù)有3個及以上關(guān)聯(lián)參數(shù)的數(shù)據(jù),如:HTMLJSON多維字典多維數(shù)據(jù)7.5.1基于維度的數(shù)據(jù)分類示例成都,杭州,重慶,武漢,蘇州,西安,天津,南京,鄭州,長沙,沈陽,青島,寧波,東莞,無錫一維數(shù)據(jù)二維數(shù)據(jù)7.5.1基于維度的數(shù)據(jù)分類示例{'高三一班成績':[{'姓名':'李紅','語文':124,'數(shù)學(xué)':120,'英語':82,'理綜':186},{'姓名':'張?zhí)m','語文':126,'數(shù)學(xué)':113,'英語':90,'理綜':260}],'高三二班成績':[{'姓名':'張三','語文':90,'數(shù)學(xué)':120,'英語':120,'理綜':245},{'姓名':'李四','語文':110,'數(shù)學(xué)':95,'英語':134,'理綜':188},{'姓名':'王五','語文':102,'數(shù)學(xué)':112,'英語':117,'理綜':212}]}多維數(shù)據(jù)7.5.1基于維度的數(shù)據(jù)分類示例{'高三一班成績':[{'姓名':'李紅','語文':124,'數(shù)學(xué)':120,'英語':82,'理綜':186},{'姓名':'張?zhí)m','語文':126,'數(shù)學(xué)':113,'英語':90,'理綜':260}],'高三二班成績':[{'姓名':'張三','語文':90,'數(shù)學(xué)':120,'英語':120,'理綜':245},{'姓名':'李四','語文':110,'數(shù)學(xué)':95,'英語':134,'理綜':188},{'姓名':'王五','語文':102,'數(shù)學(xué)':112,'英語':117,'理綜':212}]}多維數(shù)據(jù)7.5.1基于維度的數(shù)據(jù)分類數(shù)據(jù)通常存儲在文件中。為了方便后續(xù)的讀寫操作,數(shù)據(jù)通常要按照約定的組織方式進行存儲。數(shù)據(jù)存儲7.5.2一二維數(shù)據(jù)的存儲與讀寫一維數(shù)據(jù)呈線性排列,一般用特殊字符分隔,例如:使用空格分隔:成都杭州重慶武漢蘇州西安天津使用逗號分隔:成都,杭州,重慶,武漢,蘇州,西安,天津使用&分隔:成都&杭州&重慶&武漢&蘇州&西安&天津一維數(shù)據(jù)的存儲需要注意以下幾點:同一文件或同組文件一般使用同一分隔符分隔。分隔數(shù)據(jù)的分隔符不應(yīng)出現(xiàn)在數(shù)據(jù)中。分隔符為英文半角符號,一般不使用中文符號作為分隔符。7.5.2一二維數(shù)據(jù)的存儲與讀寫通常采用逗號分隔一維數(shù)據(jù)存儲7.5.2一二維數(shù)據(jù)的存儲與讀寫例:列表數(shù)據(jù)的寫入與讀取1、編程將列表[5,3,6,7]寫入文件list.txt2、編程將list.txt中的數(shù)據(jù)讀入一個列表中寫入文件思路分析:(1)定義列表(2)打開文件list.txt用于寫(3)遍歷列表,將數(shù)據(jù)轉(zhuǎn)換成字符串寫入文件,每寫一個數(shù)據(jù)后再寫一個','號讀取文件思路分析:(1)打開文件list.txt用于讀(2)讀取文件數(shù)據(jù),用split(',')分隔為字符串列表(3)將字符串列表轉(zhuǎn)換成整數(shù)列表,使用條件列表推導(dǎo)式一維數(shù)據(jù)讀寫案例7.5.2一二維數(shù)據(jù)的存儲與讀寫一維數(shù)據(jù)讀寫案例二維數(shù)據(jù)可視為多條一維數(shù)據(jù)的集合,當(dāng)二維數(shù)據(jù)只有一個元素時,這個二維數(shù)據(jù)就是一維數(shù)據(jù)。CSV(Comma-SeparatedValues,逗號分隔值):國際上通用的一種二維數(shù)據(jù)存儲格式。CSV格式規(guī)范:以純文本形式存儲表格數(shù)據(jù)文件的每一行對應(yīng)表格中的一條數(shù)據(jù)記錄,行尾標(biāo)記'\n'每條記錄由一個或多個字段組成字段之間使用逗號”,“(英文、半角)分隔7.5.2一二維數(shù)據(jù)的存儲與讀寫二維數(shù)據(jù)存儲將如下內(nèi)容存入文件score.csv姓名,語文,數(shù)學(xué),英語,理綜劉婧,124,137,145,260張華,116,143,139,263邢昭林,120,130,148,255鞠依依,115,145,131,240黃麗萍,123,108,121,235趙越,132,100,112,2107.5.2一二維數(shù)據(jù)的存儲與讀寫二維數(shù)據(jù)存儲案例字符串寫入將如下內(nèi)容存入文件score.csv姓名,語文,數(shù)學(xué),英語,理綜劉婧,124,137,145,260張華,116,143,139,263邢昭林,120,130,148,255鞠依依,115,145,131,240黃麗萍,123,108,121,235趙越,132,100,112,2107.5.2一二維數(shù)據(jù)的存儲與讀寫二維數(shù)據(jù)存儲案例列表寫入Windows平臺中CSV文件的后綴名為.csv,可通過OfficeExcel或記事本打開Python在程序中讀取.csv文件后,一般以二維列表形式存儲其中內(nèi)容將文件中的數(shù)據(jù)讀取到列表對象中strlist=[]#存儲讀取數(shù)據(jù)列表f=open('score1.csv',encoding='gbk')forlineinf:line=line.replace("\n",'')#刪除行尾換行符
line=line.split(',')#每行分隔為字段數(shù)據(jù)列表
strlist.append(line)#向列表中填加一行f.close()print(strlist)7.5.2一二維數(shù)據(jù)的存儲與讀寫二維數(shù)據(jù)讀取要求:將文件中的數(shù)據(jù)讀取到列表對象中,計算總分之后寫入另一個文件姓名,語文,數(shù)學(xué),英語,理綜劉婧,124,137,145,260張華,116,143,139,263邢昭林,120,130,148,255鞠依依,115,145,131,240黃麗萍,123,108,121,235趙越,132,100,112,2107.5.2一二維數(shù)據(jù)的存儲與讀寫二維數(shù)據(jù)處理姓名,語文,數(shù)學(xué),英語,理綜,總分劉婧,124,137,145,260,666張華,116,143,139,263,661邢昭林,120,130,148,255,653鞠依依,115,145,131,240,631黃麗萍,123,108,121,235,587趙越,132,100,112,210,554思路:從score.csv中逐行讀取
處理
寫入totalScore.csv文件中f=open('score1.csv',encoding='gbk')f_new=open('totalScore.csv',mode='w',encoding='gbk')index=0#行號forlineinf:#源文件line=line.replace("\n",'')#刪除行尾換行符
total=0#總分變量
ifindex==0:#如果第1行,尾部填加“總分”字段
line=line+",總分\n"else:#如果不是第1行,則計算總分,并加到行尾
new_line=line.split(',')#拆分成字段的列表
forxinnew_line:#遍歷求和
ifx.isdigit():total+=int(x)#如果是數(shù)字,則變?yōu)檎麛?shù)累加
line=line+','+str(total)+'\n'#將總分追加到這一行末尾
f_new.write(line)#寫入到新文件中
index+=1#處理完一行數(shù)據(jù),行號增1f.close()f_new.close()7.5.2一二維數(shù)據(jù)的存儲與讀寫二維數(shù)據(jù)處理高維數(shù)據(jù)一般采用字典形式進行格式化。網(wǎng)絡(luò)平臺上傳遞的數(shù)據(jù)大多是高維數(shù)據(jù),JSON是網(wǎng)絡(luò)中常見的高維數(shù)據(jù)格式。JSON格式的數(shù)據(jù)遵循以下語法規(guī)則:數(shù)據(jù)存儲在鍵值對(key:value)中,例如,"姓名":"張華"多個數(shù)據(jù)由逗號分隔,例如,"姓名":"張華","語文":116一個花括號保存一個JSON對象,例如,{"姓名":"張華","語文":116}一個方括號保存一個JSON
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 溫州市22中2025屆高三數(shù)學(xué)試題下學(xué)期4月模擬訓(xùn)練試題(二)含解析
- 浙江省溫州市2025年高三下學(xué)期第一次月考生物試題試卷含解析
- 十堰市丹江口市2025屆四下數(shù)學(xué)期末檢測模擬試題含解析
- 山東蒙陰縣2024-2025學(xué)年初三月考(5)物理試題含解析
- 浙江師范大學(xué)《資產(chǎn)評估學(xué)B》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海電力大學(xué)《可編程控制技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 邵陽工業(yè)職業(yè)技術(shù)學(xué)院《物流系統(tǒng)規(guī)劃與設(shè)計A》2023-2024學(xué)年第一學(xué)期期末試卷
- 江蘇省南通市崇川區(qū)2025年第二學(xué)期初三年級期末質(zhì)量調(diào)查生物試題含解析
- 浙江中醫(yī)藥大學(xué)濱江學(xué)院《醫(yī)學(xué)課程》2023-2024學(xué)年第二學(xué)期期末試卷
- 泉州工程職業(yè)技術(shù)學(xué)院《設(shè)計競賽》2023-2024學(xué)年第二學(xué)期期末試卷
- 敏捷項目管理與敏捷方法
- 《社會網(wǎng)絡(luò)分析法》課件
- 2024城鎮(zhèn)燃氣用環(huán)壓式不銹鋼管道工程技術(shù)規(guī)程
- word個人簡歷空白
- 2024年江蘇安東控股集團有限公司招聘筆試參考題庫含答案解析
- 防汛防洪裝備器材展示與操作演示
- 如何在Python中創(chuàng)建循環(huán)結(jié)構(gòu)
- 《養(yǎng)成良好的行為習(xí)慣》主題班會課件
- 部編版六年級下冊道德與法治全冊教案
- 2023年10月自考00226知識產(chǎn)權(quán)法試題及答案含評分標(biāo)準(zhǔn)
- 四年級下冊勞動教育全冊教學(xué)課件
評論
0/150
提交評論