2011-03-06 69 views
1

我有一些代碼可以創建一個CSV文件。它寫入文件的行的順序可能會有所不同。我正在寫一個測試,以確保CSV文件是我所期望的。我需要做的就是檢查所有行是否存在,並且所有字段是否相等。我有下面的代碼,但不知道如何讓它工作,所以它不關心行的順序。如何確保兩個CSV文件包含相同的行,但行的順序無關緊要?比較兩個CSV文件時行順序無關的Python

def assertRowsEqual(self, first, second) 

    error_count = 0 
    first_f = open(first) 
    csv1 = csv.reader(first_f, delimiter=',', quotechar='"', 
        quoting=csv.QUOTE_ALL) 

    second_f = open(second) 
    csv2 = csv.reader(second_f, delimiter=',', quotechar='"', 
        quoting=csv.QUOTE_ALL) 

    for row1 in csv1: 
     row2 = csv2.next() 
     if row1 != row2: 
      self.fail("NOT THE SAME\n") 

回答

6

如果你不在乎重複行:

set(csv1) == set(csv2) 

其他:

sorted(csv1) == sorted(csv2) 
+0

謝謝larsmans – 2011-03-06 18:52:38

0

如果它們適合內存,只需轉換爲列表並對其進行排序。