Python 比较两个 CSV 文件时行顺序无关紧要

1 投票
2 回答
4325 浏览
提问于 2025-04-16 13:06

我有一些代码可以生成一个CSV文件。写入文件的行的顺序可能会有所不同。我正在写一个测试,以确保这个CSV文件符合我的预期。我只需要检查所有的行是否都在,以及所有的字段是否相等。我有下面的代码,但不确定如何让它工作,以便不在意行的顺序。我该如何确保两个CSV文件包含相同的行,但行的顺序无所谓呢?

 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")

2 个回答

0

如果它们能放进内存里,就把它们转换成列表然后排序。

6

如果你不在乎重复的行:

set(csv1) == set(csv2)

否则:

sorted(csv1) == sorted(csv2)

撰写回答