2016-11-30 10 views
0

csvファイルのすべての行を返すされていませんYPythonの方法は、私が形式以下でcsvファイルを持っている

test4、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ファイルの最後の行のみを返します。すべての行

お勧めします。

答えて

1

を、あなたは、各反復でのテストケースとフラグ変数の値を交換すると、最終的にはあなたが最後の行から値を返すされています。 dictまたはリストを使用して、各反復でこれらの値を追加し、最後にそれらの値を戻すことができます。

1

返す変数を再割り当てしています。単にリストに追加:forループでは

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 
1

@ Navidad20はリストを使用することを示していますが、これはテストケースとフラグの値を一緒に保持しないため、後でzipを2つのリストにまとめておく必要があります。だから私が代わりにお勧めしたい:

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 

あなたが戻って2要素のタプルのリストを取得する方法を、あなたには、いくつかの他のコンテキストでペアを処理する

for testcase, flag in testexcution(): 
    ... 

ようなコードを記述することができます。

関連する問題