存儲數(shù)據(jù)的方式
常用的存儲數(shù)據(jù)的方式有兩種——存儲成csv格式文件、存儲成Excel文件
什么是CSV?
csv是一種字符串文件的格式,它組織數(shù)據(jù)的語法就是在字符串之間加分隔符——行與行之間是加換行符,同行字符之間是加逗號分隔。
它可以用任意的文本編輯器打開(如記事本),也可以用Excel打開,還可以通過Excel把文件另存為csv格式(因為Excel支持csv格式文件)。
用csv格式存儲數(shù)據(jù),讀寫比較方便,易于實現(xiàn),文件也會比Excel文件小。但csv文件缺少Excel文件本身的很多功能,比如不能嵌入圖像和圖表,不能生成公式。
存儲數(shù)據(jù)的基礎(chǔ)知識
存儲成csv格式文件和存儲成Excel文件,這兩種不同的存儲方式需要引用的模塊不同。

csv寫入與讀取
如何往csv格式文件寫入數(shù)據(jù)?
1、引用csv模塊
寫法:
import csv#引用csv模塊。
csv_file = open('demo.csv','w',newline='',encoding='utf-8')#創(chuàng)建csv文件,我們要先調(diào)用open()函數(shù),傳入?yún)?shù):文件名“demo.csv”、寫入模式“w”、newline=''、encoding='utf-8'。
說明:加newline=' '參數(shù)的原因是,可以避免csv文件出現(xiàn)兩倍的行距(就是能避免表格的行與行之間出現(xiàn)空白行)。加encoding='utf-8',可以避免編碼問題導(dǎo)致的報錯或亂碼。
2、創(chuàng)建完csv文件后,借助csv.writer()函數(shù)來建立一個writer對象
寫法:
writer = csv.writer(csv_file)# 用csv.writer()函數(shù)創(chuàng)建一個writer對象
3、調(diào)用writer對象的writerow()方法,往csv文件里寫入內(nèi)容
寫法:
writer.writerow(['電影','豆瓣評分'])#借助writerow()函數(shù)可以在csv文件里寫入一行文字 "電影"和“豆瓣評分”。
特別需要注意:writerow()函數(shù)里,需要放入列表參數(shù),所以我們得把要寫入的內(nèi)容寫成列表。就像['電影','豆瓣評分']
4、完整的寫入CSV代碼寫法:
import csv#引用csv模塊。
csv_file = open('demo.csv','w',newline='',encoding='utf-8')#調(diào)用open()函數(shù)打開csv文件,傳入?yún)?shù):文件名“demo.csv”、寫入模式“w”、newline=''、encoding='utf-8'。
writer = csv.writer(csv_file)# 用csv.writer()函數(shù)創(chuàng)建一個writer對象。
writer.writerow(['電影','豆瓣評分'])#調(diào)用writer對象的writerow()方法,可以在csv文件里寫入一行文字 “電影”和“豆瓣評分”。
writer.writerow(['銀河護衛(wèi)隊','8.0'])#在csv文件里寫入一行文字 “銀河護衛(wèi)隊”和“8.0”。
writer.writerow(['復(fù)仇者聯(lián)盟','8.1'])#在csv文件里寫入一行文字 “復(fù)仇者聯(lián)盟”和“8.1”。
csv_file.close()#寫入完成后,關(guān)閉文件就大功告成啦!
怎么讀取csv文件的數(shù)據(jù)
1、調(diào)用和打開CSV模塊
import csv
csv_file = open('demo.csv','r',newline='',encoding='utf-8')# 用open()打開“demo.csv”文件,'r'是read讀取模式,newline=''是避免出現(xiàn)兩倍行距。encoding='utf-8'能避免編碼問題導(dǎo)致的報錯或亂碼。
2、建立一個“朗讀者”
reader = csv.reader(csv_file)# 用csv.reader()函數(shù)創(chuàng)建一個reader對象
3、遍歷讀取
for row in reader:
print(row)# 用for循環(huán)遍歷reader對象的每一行。打印row,就能讀取出“demo.csv”文件里的內(nèi)容
csv模塊官方文檔鏈接:
https://yiyibooks.cn/xx/python_352/library/csv.html#module-csv
Excel寫入與讀取
如何往EXCEL格式文件寫入數(shù)據(jù)
1、 提前安裝好openpyxl模塊
2、 引用它
3、 通過openpyxl.Workbook()函數(shù)創(chuàng)建新的工作薄
寫法:
import openpyxl #引用openpyxl
wb = openpyxl.Workbook() #利用openpyxl.Workbook()函數(shù)創(chuàng)建新的workbook(工作?。ο螅褪莿?chuàng)建新的空的Excel文件
4、 創(chuàng)建完新的工作薄后,獲取工作表。
寫法:
sheet = wb.active#wb.active就是獲取這個工作薄的活動表,通常就是第一個工作表。
sheet.title = 'new title'#可以用.title給工作表重命名?,F(xiàn)在第一個工作表的名稱就會由原來默認的“sheet1”改為"new title"。
5、 往單元格里寫入內(nèi)容
sheet['A1'] = '漫威宇宙' #把'漫威宇宙'賦值給第一個工作表的A1單元格,就是往A1的單元格中寫入了'漫威宇宙'。
6、 如果我們想往工作表里寫入一行內(nèi)容的話,就得用到append函數(shù)
row = ['美國隊長','鋼鐵俠','蜘蛛俠']#把我們想寫入的一行內(nèi)容寫成列表,賦值給row。
sheet.append(row)#用sheet.append()就能往表格里添加這一行文字。
7、 如果我們想要一次性寫入的不止一行,而是多行內(nèi)容
rows = [['美國隊長','鋼鐵俠','蜘蛛俠'],['是','漫威','宇宙', '經(jīng)典','人物']]#先把要寫入的多行內(nèi)容寫成列表,再放進大列表里,賦值給rows。
for i in rows:
sheet.append(i)#遍歷rows,同時把遍歷的內(nèi)容添加到表格里,這樣就實現(xiàn)了多行寫入。
print(rows)#打印rows
8、保存這個Excel文件
wb.save('Marvel.xlsx')#保存新建的Excel文件,并命名為“Marvel.xlsx”
9、完整的寫入EXCEL文件數(shù)據(jù)的代碼:
import openpyxl #調(diào)用openpyxl模塊
wb=openpyxl.Workbook() #建立工作簿
sheet=wb.active#建立工作表
sheet.title='new title'#給工作表命名
sheet['A1'] = '漫威宇宙'#定義單元格A1的內(nèi)容
rows= [['美國隊長','鋼鐵俠','蜘蛛俠'],['是','漫威','宇宙', '經(jīng)典','人物']]#給出其他單元格待填寫的內(nèi)容
for i in rows:
sheet.append(i)#遍歷這些內(nèi)容并逐一寫入工作表
print(rows)#打印內(nèi)容
wb.save('Marvel.xlsx')#保存并關(guān)閉內(nèi)容
怎么讀取Excel文件
對應(yīng)上面寫入的EXCEL文件,完整讀取它的代碼如下:
wb = openpyxl.load_workbook('Marvel.xlsx')# 調(diào)用openpyxl.load_workbook()函數(shù),打開“Marvel.xlsx”文件工作簿
sheet = wb['new title']# 獲取“Marvel.xlsx”工作薄中名為“new title”的工作表
sheetname = wb.sheetnames
print(sheetname)# sheetnames是用來獲取工作薄所有工作表的名字的。A1_cell = sheet['A1']#
A1_value = A1_cell.value
print(A1_value)# 把“new title”工作表中A1單元格賦值給A1_cell,再利用單元格value屬性,就能打印出A1單元格的值
openpyxl模塊的官方文檔:https://openpyxl.readthedocs.io/en/stable/