Python类在调用该类时出现自定位参数错误



我自己有问题,我写了一个类来对我作为csv输入的两个数据集进行数据比较-在尝试调用此函数时,我得到了一个TypeError。

这是我的班级

import csv
import time
import pandas as pd

start_time = time.time()

class compare_files:
def __init__(self, source, target):
self.source = source
self.target = target
def compare_csv(self):
source_file = open(self.source, "r", encoding="utf8")
target_file = open(self.target, "r", encoding="utf8")
csv_reader_source = csv.reader(source_file, delimiter=',')
csv_reader_target = list(csv.reader(target_file, delimiter=','))
columns = []
all_mistakes = []
target_line = 0
for row_source in csv_reader_source:
if target_line == 0:
for i in row_source:
columns.append(i)
target_line = 1
continue
row_target = csv_reader_target[target_line]
target_line += 1
mistakes = []
if len(row_target) != len(row_target):
if len(mistakes) == 0:
mistakes.append(row_source[0])
mistakes.append('number of columns in this row mismatch')
for i in range(len(row_source)):
if row_source[i] != row_target[i]:
if len(mistakes) == 0:
mistakes.append(row_source[0])
mistakes.append(columns[i])
mistakes.append(row_source[i])
mistakes.append(row_target[i])
if len(mistakes) > 0:
all_mistakes.append(mistakes)
return all_mistakes, round(time.time() - start_time, 2)


all_mistakes, time_taken = compare_files.compare_csv(
"source.csv", "target.csv")
for i in all_mistakes:
print(i)
print("Execution time took %s seconds" % (time_taken))

这里有一个错误,我的compare函数应该同时接受source和target,但当我调用compare函数时,它似乎只接受一个参数。

~/Desktop » python3 compar2.py                                                                        
Traceback (most recent call last):
File "compar2.py", line 70, in <module>
all_mistakes, time_taken = compare_files.compare_csv(
TypeError: compare_csv() takes 1 positional argument but 2 were given

您在构造函数中定义了两个参数,因此您必须像下面的一样首先调用构造函数

com_files = compare_files("source.csv", "target.csv")

然后调用compare_csv方法,而不需要像这个这样的两个参数

all_mistakes, time_taken = com_files.compare_csv()

最新更新