Appium APPIUM+python 用 excel 自动读取数据的总是重复读取好几行,有大佬来看看吗

keita999 · 2018年04月16日 · 最后由 ruanxiao3-github 回复于 2018年04月17日 · 1112 次阅读
import xlrd
def open_excel(file='file.xls'):
try:
data = xlrd.open_workbook(file)
return data
except Exception, e:
print str(e)
# 根据索引获取Excel表格中的数据 参数:fileExcel文件路径 colnameindex:表头列名所在行的所以 by_index:表的索引
def excel_table_byindex(file='file.xls', colnameindex=0, by_index=0):
data = open_excel(file)
table = data.sheets()[by_index]
nrows = table.nrows # 行数
colnames = table.row_values(colnameindex) # 某一行数据
list = []
for rownum in range(1, nrows):
row = table.row_values(rownum)
if row:
app = {}
for i in range(len(colnames)):
app[colnames[i]] = row[i]
list.append(app)
return list
listdata1 = excel_table_byindex("D:\\file2.xlsx", 0)
for i in range(0, len(listdata1)):
print(listdata1[i]['name'])


最佳回复
#-*-coding:utf-8-*-
import xlrd
def open_excel(file='file.xls'):
try:
data = xlrd.open_workbook(file)
return data
except Exception, e:
print str(e)
# 根据索引获取Excel表格中的数据 参数:fileExcel文件路径 colnameindex:表头列名所在行的所以 by_index:表的索引
def excel_table_byindex(file='file.xls', colnameindex=0, by_index=0):
data = open_excel(file)
table = data.sheets()[by_index]
nrows = table.nrows # 行数
colnames = table.row_values(colnameindex) # 某一行数据
list = []
for rownum in range(1, nrows):
row = table.row_values(rownum)
print row
if row:
app = {}
for i in range(len(colnames)):
app[colnames[i]] = row[i]
print app
# 这里从for移出来,不然重复添加了
list.append(app)
return list
listdata1 = excel_table_byindex("file.xls", 0)
for i in range(0, len(listdata1)):
print(listdata1[i]['name'])
共收到 13 条回复 时间 点赞

格式太乱了,看着头晕,有markdown支持为啥不用呢

layasa 回复

不好意思。。重新编辑了。。

list = []
file='file.xls'

一看这个就不想看了

mixure 回复

大佬应该怎么写。。。。😂

mixure 回复

可以帮萌新看看么😂 😂

#-*-coding:utf-8-*-
import xlrd
def open_excel(file='file.xls'):
try:
data = xlrd.open_workbook(file)
return data
except Exception, e:
print str(e)
# 根据索引获取Excel表格中的数据 参数:fileExcel文件路径 colnameindex:表头列名所在行的所以 by_index:表的索引
def excel_table_byindex(file='file.xls', colnameindex=0, by_index=0):
data = open_excel(file)
table = data.sheets()[by_index]
nrows = table.nrows # 行数
colnames = table.row_values(colnameindex) # 某一行数据
list = []
for rownum in range(1, nrows):
row = table.row_values(rownum)
print row
if row:
app = {}
for i in range(len(colnames)):
app[colnames[i]] = row[i]
print app
# 这里从for移出来,不然重复添加了
list.append(app)
return list
listdata1 = excel_table_byindex("file.xls", 0)
for i in range(0, len(listdata1)):
print(listdata1[i]['name'])

一个简单的功能,被你写得太复杂了。。。

def ReadExcel():
workbook = xlrd.open_workbook(config_path)

table = workbook.sheets()[0] # 打开第一张表
nrows = table.nrows # 获取表的行数
# print(nrows)
for i in range(nrows): # 循环逐行打印
if i == 0: # 跳过第一行
continue
else:
list = table.row_values(i)
print(list)

layasa 回复

万分感谢~~~~

KKStack 回复

想写脚本从excel提交表单。。有很多字段都在excel里面。才这样写。。。

keita999 回复

之前我也在研究到底把测试数据放在哪;放表里?各种格式文件里?然后 由此引出了
什么测试数据分离一堆乱其八糟;你就写在测试脚本里,写在最上边作为全局变量
又能怎样,这叫模仿单元测试

for rownum in range(1, nrows):
row = table.row_values(rownum)
print row
if row:
app = {}
for i in range(len(colnames)):
app[colnames[i]] = row[i]
print app
# 这里从for移出来,不然重复添加了
list.append(app)

这么写的不费劲吗?直接用zip()就可以生成带Excel title的字典。

for rownum in range(1, nrows):
row = table.row_values(rownum)
print row
if row:
app = dict(zip(colnames, row))
# 这里从for移出来,不然重复添加了
list.append(app)
ljzhangi 回复

哈哈,其它没考虑,主要是在题主代码基础上修复他提出的问题

ljzhangi 回复

行家里手

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册