import csv
with open("/路徑/文件名.csv","r") as csvfile #固定寫法,使用open()方法,無需關(guān)閉file,'r'表示讀操作
read=csv.reader(csvfile) #使用csv.reader()方法,讀取文件,返回可迭代類型
for i in read:
print i
import csv
with open("/路徑/文件名.csv","w") as csvfile #'w'表示寫操作,有則修改,無則新建
write=csv.writer(csvfile)
write.writerow(data) #寫入一行操作,data為可迭代類型,如果為字符串,則單個字符為一個元素
write.writerows(data) #寫入多行操作,data中一個元素為一行
方法1:----------------------------------
import csv
list1=[]
with open('data.csv','r')as csvfile1: #首先---讀取數(shù)據(jù)
read=csv.reader(csvfile1)
for i in read:
list1.append(i)
with open('data.csv','w')as csvfile2: #然后----寫入之前讀取的數(shù)據(jù)
writer=csv.writer(csvfile2)
date=[list1[0], #在第五行開始添加數(shù)據(jù)
list1[1],
list1[2],
list1[3],
['Jack','104']]
writer.writerows(date)
with open('data.csv','r')as csvfile3: #輸出添加后的數(shù)據(jù)
read2=csv.reader(csvfile3)
for i in read2:
print(i)
方法2:
#讀取文件
f = open("./data.csv") #f是一個可迭代對象
result = [] #用于存放每一行的數(shù)據(jù)
for line in f:
row = line.split(",") #將每一行數(shù)據(jù)用","分割,保存到一個列表中
data = []
for word in row:
data.append(word.strip()) #(word.strip())去除數(shù)據(jù)中多余的空格
result.append(data)
f.close()
print(result)
#當前文件夾下創(chuàng)建一個output.csv文件,將數(shù)據(jù)寫入到其中
with open("output.csv","w") as csvFile:
result.append(["Jack","104"])
for row in result:
csvFile.write(",".join(row)+"\n") #將一個列表中的數(shù)據(jù)用","拼接成一個字符串
csvFile.close()
方法3: #使用DictReader方法讀寫
import csv
def getData(path): #path讀取文件的路徑
result = []
with open(path) as file:
reader = csv.DictReader(file)
for row in reader: # row.keys() ["name","stuNo"]
newRow = {} # row.values() ["ZhangSan","101"]
for key,value in zip(row.keys(),row.values()): #獲取列名,列值并去空格
newRow[key.strip()] = value.strip()
result.append(newRow)
return result
data = getData("./data.csv")
with open("./output.csv","w") as csvFile:
data = getData("./data.csv")
data.append({"name":"Jack","stuNo":"104"})
fields = ["name","stuNo"] #列標題
writer = csv.DictWriter(csvFile,fieldnames=fields) #用csv模塊的dictwrite方法將字典寫入到csv文件
writer.writeheader() #將csv文件的第一行(即列名寫入到csv文件)
for row in data: #遍歷字典寫入到csv文件中
writer.writerow(row)
csvFile.close()
xlrd 讀取文件:
import xlrd
myWorkbook=xlrd.open_workbook('/路徑/文件名.xlsx') #獲取excel工作簿
mySheets=myWorkbook.sheets() #其次獲取所有的工作表
mySheet1=myWorkbook[0] #獲取第一個工作表
mySheet1=myWorkbook.sheet_by_index(0) #同上
mySheet1=myWorkbook.sheet_by_name('sheet1') #同上
nrows=mySheet1.nrows #獲得所有的行數(shù),int類型
ncols=mySheet1.ncols #獲得所有的列數(shù),int類型
myRowValue=mySheet1.row_value(i) #獲得i列所有行的值
myCell=mySheet1.cell(i,j) #獲取i行,j列單元格
myCell.value #通過單元格獲取值
mySheet1.cell_value(i,j) #直接獲取表sheet1的i行,j列的值
mySheet1.cell_value(i,j)="new_value" #直接賦值修改單元格的值:
xlwt 寫入文件:
import xlwt
new_wk=xlwt.Workbook() #創(chuàng)建工作簿
new_sheet1=new_wk.add_sheet('sheetname') #創(chuàng)建名為sheetname的工作表
sheet.write(i,j,'content') #在i行,j列寫入內(nèi)容:content,i,j從0開始
new_wk.save('/路徑/文件名.xlsx') #使用xlwt寫入操作后,需要保存
讀、寫文件:
import xlrd
from xlutils.copy import copy
workBook=xlrd.open_workbook('/路徑/文件名.xlsx') #參考xlrd讀操作
new_workBook=copy(workBook) #使用xlutils中copy()方法復(fù)制一份工作簿
ws=new_workBook.get_sheet(index) #get_sheet()方法,在僅導(dǎo)入xlrd時不可用,僅對使用copy()之后的工作簿可用
ws.write(i,j,'content') #在i行,j列寫入內(nèi)容:content,i,j從0開始,可覆蓋
new_workBook.save('/路徑/文件名.xlsx')
寫入單個數(shù)據(jù)
創(chuàng)新互聯(lián)專注于南湖企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站制作。南湖網(wǎng)站建設(shè)公司,為南湖等地區(qū)提供建站服務(wù)。全流程按需求定制開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)讀、寫文件:
from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.writer.excel import ExcelWriter
workBook=load_workbook('/路徑/文件名.xlsx')
sheetNames=workBook.sheetnames #獲取工作簿所有工作表名稱,返回列表
sheet1=myWorkbook.get_sheet_by_name('Sheet1') #獲取myWorkbook的表單Sheet1
sheet1.cell(i,j).value #獲取i行,j列單元格的值,注意:此時單元格索引有變,從1開始
sheet1['C3']='content' #為C3單元格寫入值,注意:此時單元格索引有變,分別從A,1開始
sheet1.cell(i,j).value = 'values'
在這里我封裝了一個類,方便以后使用
from openpyxl import Workbook #導(dǎo)入openpyxl模塊的workbook模塊,用于寫入.xlsx
from openpyxl import load_workbook
from openpyxl.writer.excel import ExcelWriter
封裝類: class saveExcelData(object): # 定義類(用于封裝函數(shù),方便以后使用)
def __init__(self,dataList,sheetTitle,fileName):#定義構(gòu)造函數(shù)分別傳入數(shù)據(jù),工作表標題,保存文件名稱
self.dataList=dataList
self.sheetTitle=sheetTitle
self.fileName=fileName
def saveData(self): # 定義保存操作
workbook = Workbook() # 1、新建一個工作簿,實例化對象
sheet = workbook.active # 2、激活一個工作表
sheet.title = self.sheetTitle # 3、給激活的工作表命名
for i in self.dataList: # dataList傳入的應(yīng)為iterable元素組成的iterable容器類型
sheet.append(i)
workbook.save(self.fileName)
使用類:
from day12_csv_xls.save_class_excel import SavaExcelData
# (上層文件夾) (文件名) (文件名里的類名)
data = list(range(20))
new_data = []
for i in range(4):
new_data.append(data[len(data)//4*i:len(data)//4*(i+1)])
#寫入數(shù)據(jù)順序為 data[0:4],data[5:10],data[10:15],data[15:20]
print(len(new_data))
new1 = SavaExcelData(new_data, 'new_title', 'new_file.xlsx')
new1.saveData()
對Excel表中的行進行篩選并排序,(依照其中一列的數(shù)據(jù)對每行進行排序)寫入到新表單中
import xlrd
import xlwt
old_wbk = xlrd.open_workbook("rank.xlsx")
rank = old_wbk.sheets()[0]
nrows = rank.nrows #獲取工作表數(shù)據(jù)的行數(shù)
filterData = [] #保存篩選后的數(shù)據(jù)
for row in range(nrows):
myRowValue = rank.row_values(row) #從表中獲取行數(shù)據(jù)
if row is 0 or myRowValue[2]>5.0: #判斷行數(shù)據(jù),如果是第一行表頭或者是points分數(shù)大于5.0的數(shù)據(jù)行保留
filterData.append(myRowValue)
headers = filterData[0] #獲取表頭并寫入到新的Excel表中
new_wbk = xlwt.Workbook() #創(chuàng)建一個新的工作簿
new_rank = new_wbk.add_sheet("new_rank")#添加表單
for col in range(len(headers)):
new_rank.write(0,col,headers[col])
del filterData[0] #將表頭從filterData中刪除
points = [] #將points從篩選后的數(shù)據(jù)中分離出來
for item in filterData:
points.append(item[2])
points.sort(reverse=True) #對分數(shù)進行排序
resutl = [] #存放最終排序后的結(jié)果
#將篩選后的數(shù)據(jù)與排序后的分數(shù)進行比較,依次添加到新的列表中
for point inpoints:
for row in filterData:
if row[2] == point:
resutl.append(row)
print(resutl)
for row in range(0,len(resutl)):
for col in range(len(headers)):
new_rank.write(row+1,col,resutl[row][col])
new_wbk.save("new_rank.xls")
import xlrd
import xlwt
wb=xlrd.open_workbook("./素材/two/rank.xlsx")
mysheet=wb.sheet_by_index(0)
nrows=mysheet.nrows #獲取所有的行數(shù)
# print(nrows)
all_data=[]
for i in range(nrows):
row_values=mysheet.row_values(i) #將所有數(shù)據(jù)根據(jù)條件points>5帥選后保存
# print(row_values[-1])
if i>0 and row_values[-1] > 5:
all_data.append(row_values)
elif i==0: #跳過表頭
all_data.append(row_values)
else:
continue
# print(all_data) #讀取數(shù)據(jù)
head=all_data[:1]
data=all_data[1:]
for i in range(len(data)):
for j in range(i):
if data[i][-1]>data[j][-1]: #對某行的指定列value值進行對比
data[i],data[j]=data[j],data[i]
print(data) #排序后
wb=xlwt.Workbook()
new_sheet=wb.add_sheet("rank")
for i in range(len(head)):
new_sheet.write(0,i,head[i])
for j in range(len(data)):
for k in range(len(data[j])):
new_sheet.write(j+1, k, data[j][k]) #寫入新表單(更新)
wb.save("output.xls")
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)頁題目:pyhton——csv/excel數(shù)據(jù)持久化-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://muchs.cn/article36/dheepg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、自適應(yīng)網(wǎng)站、靜態(tài)網(wǎng)站、移動網(wǎng)站建設(shè)、外貿(mào)建站、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容