I cite the author's modified answer , taking into account the comments:
import argparse parser = argparse.ArgumentParser() parser.add_argument('csvfile') parser.add_argument('csvfile2') args = parser.parse_args() filename1 = args.csvfile filename2 = args.csvfile2 with open('result.csv', 'w') as response_file: with open(filename1) as f: msisdn1_lines = f.readlines() with open(filename2) as f: msisdn2_lines = f.readlines() # На каждую строчку msisdn1_lines for msisdn1 in msisdn1_lines: # Делаем перебор строк другого файла for msisdn2 in msisdn2_lines: if msisdn1 == msisdn2: response_file.write(msisdn1)
The verification algorithm can be simplified by using the intersection method of the set (set), which returns common elements:
with open('result.csv', 'w') as response_file: with open(filename1) as f: msisdn1_lines = set(f.readlines()) with open(filename2) as f: msisdn2_lines = set(f.readlines()) # Получаем список общих элементов common_lines = msisdn1_lines.intersection(msisdn2_lines) for line in common_lines: response_file.write(line)
Ps. The intersection method is replaced by the & operator, so you can simply:
common_lines = msisdn1_lines & msisdn2_lines
Pps. instead of a for line in common_lines you can write to a file in one fell swoop if the lines are combined into one line.
It was:
for line in common_lines: response_file.write(line)
will be:
response_file.write(''.join(common_lines))
comm -12 <(sort -u a.csv) <(sort -u b.csv)- jfs