[英]Python method is not returning all the rows of csv file
我有以下格式的csv文件:
TestCase,标志
测试1,Y
测试2,Y
测试3
测试4,Y
TestCase和Flag是列名称。
现在,为了读取上述csv文件的所有行,我编写了以下代码:
import csv
import os
csv.register_dialect(
'usercredentials',
delimiter=',',
quotechar='"',
doublequote=True,
skipinitialspace=True,
lineterminator='\r\n',
quoting=csv.QUOTE_MINIMAL
)
def testexecution():
with open('location of above csv file', 'r+') as file:
data = csv.DictReader(file, dialect='usercredentials')
for row in data:
testcase = row['TestCase']
flag = row['Flag']
return testcase, flag
但是此方法仅返回csv文件的最后一行,而我希望此方法返回所有行。
请提出建议。
您正在重新分配要返回的变量。 只需添加一个列表:
with open('location of above csv file', 'r+') as file:
data = csv.DictReader(file, dialect='usercredentials')
testcase = []
flag = []
for row in data:
testcase.append(row['TestCase'])
flag.append(row['Flag'])
return testcase, flag
在for循环中,您将在每次迭代中替换测试用例和标志变量的值,最后从最后一行返回值。 您可能想要使用dict或列表,在其中将这些值附加在每次迭代中,最后返回这些值。
@ Navidad20建议使用列表,但这不会将测试用例和标志值保持在一起,这几乎可以肯定意味着以后您必须将两个列表zip
在一起。 所以我建议改为:
with open('location of above csv file', 'r+') as file:
data = csv.DictReader(file, dialect='usercredentials')
result = []
for row in data:
result.append((row['TestCase'], row['Flag']))
return result
这样,您将获得一个包含两个元素的元组的列表,从而使您可以编写如下代码
for testcase, flag in testexcution():
...
在其他上下文中处理对。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.