data数据封装之python读取csv文件

使用背景

实际项目中,我们的测试数据可能存储在一个数据文件中,如txt、excel、csv文件类型。我们可以封装一些方法来读取文件中的数据来实现数据驱动

enumerate()简介

enumerate()是python的内置函数

  • enumerate在字典上是枚举、列举的意思
  • 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
  • enumerate多用于在for循环中得到计数

实例

对一个列表,既要遍历索引又要遍历元素

1     list = ["", "", "一个", "测试", "数据"]
2     for i in range(len(list)):
3         print(i,list[i])
4     print("==========")
5     for index,item in enumerate(list):
6         print(index,item)

输出结果

数据读取方法封装

 1 #coding=utf-8
 2 import csv
 3 
 4 
 5 def get_csv_data(csv_file, line):
 6     '''
 7     获取csv文件指定行的数据
 8     :param csv_file: csv文件路径
 9     :param line: 数据行数
10     :return:
11     '''
12     with open(csv_file, 'r', encoding='utf-8-sig') as file:
13         reader = csv.reader(file)
14         for index, row in enumerate(reader, 1):
15             if index == line:
16                 return row
17 if __name__=='__main__':
18     csv_file = '../data/account.csv'
19     data = get_csv_data(csv_file, 2)
20     print(data)

注:创建csv文件可以使用excel进行创建,保存时另存为.csv文件即可,如果直接将后缀改为.csv有可能读取不到

utf-8与utf-8-sig两种编码格式的区别

UTF-8以字节为编码单元,它的字节顺序在所有系统中都是一样的,没有字节序的问题,也因此它实际上并不需要BOM(“ByteOrder Mark”)。但是UTF-8 with BOM即utf-8-sig需要提供BOM。

猜你喜欢

转载自www.cnblogs.com/shenhainixin/p/9334195.html