昨天發了篇文章,是講如何讀取.xls格式文件的,今天來說下CSV文件怎麼讀取。我個人用CSV還是比較多的,因為讀取起來比較方便。
小試牛刀「示例文件」「來個簡單式的」
讀取csv文件,用的是csv.reader()這個方法。返回結果是一個_csv.reader的對象,我們可以對這個對象進行遍歷,輸出每一行,某一行,或某一列。
import csv
with open('test.csv','r') as f:
content=csv.reader(f)
for i in content:
print(i)如果希望僅僅讀取一行或者一列可以這樣做:
獲取一行import csv
with open('test.csv','r') as f:
content=csv.reader(f)
print(list(content)[1])
獲取一列import csv
with open('test.csv','r',encoding="utf-8") as f:
content=csv.reader(f)
for i in content:
print(i[1])
單個讀出按照第一行的title進行讀取。
import csv
def get_data(file_name):
with open(file_name,encoding="utf-8") as csvfile:
reader =list( csv.DictReader(csvfile))
for row in reader:
# 循環列印數據的id和class值
print(row["id"],row["class"])
# 1 2
# 2 3
# 3 4
print(row)
# orderedDict([('id', '2'), ('class', '3')])
# OrderedDict([('id', '3'), ('class', '4')])
return reader
get_data('test.csv')
封裝案例Python 中的csv模塊實現了以csv格式讀取和寫入表格數據的類,可以從Excel生成的csv文件中讀取數據。
reader對象和writer對象以列表的形式讀寫數據,DictReader類和DictWriter類以字典的形式讀取數據。
「示例文件」
'''
序號,usename,password,mobile,預期結果,實際結果,測試結果
1,,123456,15313167402,400,,
2,test_user,123456,15313167402,400,,
3,test_user,123456,15313167402,400,,
4,test_user,123456,15313167402,400,,
5,test_user,123457,15313167403,401,,
'''「代碼展示」
import csv
from datetime import datetime
def get_data(filename):
'''從csv中讀取數據'''
with open(filename) as f:
data = list(csv.DictReader(f))
return data
data =get_data('test2.csv')
def put_data(data):
'''將結果保存到新的csv文件中'''
filename = f'{datetime.now().strftime("%Y-%m-%d_%H_%M_%S")}.csv'
with open(filename, "w", newline='') as f:
headers = data[0].keys()
writer = csv.DictWriter(f, headers)
writer.writeheader()
writer.writerows(data)
put_data(data)另:有同學要其它的關於Excel類封裝,可以看這篇文章。
接口自動化測試框架實戰:郵件、斷言、Excel類的封裝
參考文章:https://docs.python.org/3.7/library/csv.html#module-csv