昨天发了篇文章,是讲如何读取
.xls格式文件的,今天来说下CSV文件怎么读取。我个人用CSV还是比较多的,因为读取起来比较方便。
小试牛刀
示例文件

来个简单式的
读取csv文件,用的是csv.reader()这个方法。返回结果是一个_csv.reader的对象,我们可以对这个对象进行遍历,输出每一行,某一行,或某一列。
import csvwith open('test.csv','r') as f:content=csv.reader(f)for i in content:print(i)

如果希望仅仅读取一行或者一列可以这样做:
获取一行
import csvwith open('test.csv','r') as f:content=csv.reader(f)print(list(content)[1])

获取一列
import csvwith open('test.csv','r',encoding="utf-8") as f:content=csv.reader(f)for i in content:print(i[1])

单个读出
按照第一行的title进行读取。
import csvdef 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 4print(row)# orderedDict([('id', '2'), ('class', '3')])# OrderedDict([('id', '3'), ('class', '4')])return readerget_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 csvfrom datetime import datetimedef get_data(filename):'''从csv中读取数据'''with open(filename) as f:data = list(csv.DictReader(f))return datadata =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)
另:有同学说要看封装,其实之前写过了。
