簡體   English   中英

Python方法未返回csv文件的所有行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM