我被赋予编写脚本的任务,以检查CSV文件中给定数据的MX记录。我首先尝试使用正则表达式进行检查,然后再尝试读取CSV文件。我也想记录进度,所以我要打印行号,但是每当我使用cvs_reader对象计算行长时,我都无法进入for循环
import csv
with open('test_list.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
line_count = 0
data = list(csv_reader)
row_count = len(data)
for row in csv_reader:
print({row[2]})
line_count += 1
print('Checking '+ str(line_count) +' of '+ str(row_count))
print('Processed lines :'+str(row_count))
我只得到
的结果
加工线:40
python脚本的新功能。请帮助
我的test_list.csv看起来像这样
fname, lname, email
bhanu2, singh2, bhanudoesnotexist@doesnotexit.com
bhanu2, singh2, bhanudoesnotexist@doesnotexit.com
bhanu2, singh2, bhanudoesnotexist@doesnotexit.com
bhanu2, singh2, bhanudoesnotexist@doesnotexit.com
Total 40 times continued
答案 0 :(得分:2)
第一件事csv数据与这个问题无关,
解决方案:
import csv
input_file = open("test_list.csv", "r").readlines()
print(len(input_file))
csv_reader = csv.reader(input_file)
line_count = 0
# data = list(csv_reader)
# row_count = len(data)
for row in csv_reader:
print({row[2]})
line_count += 1
print('Checking ' + str(line_count) + ' of ' + str(len(input_file)))
print('Processed lines :' + str(len(input_file)))
问题识别:
with open('test_list.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
line_count = 0
data = list(csv_reader)
row_count = len(data)
在您的代码data = list(csv_reader)
中,由于此行,您耗尽了变量。因此它将无法在for循环中循环
因此,您可以像这样读取csv文件
input_file = open("test_list.csv", "r").readlines()
print(len(input_file))
然后使用csv.reader()
答案 1 :(得分:2)
csv.reader
返回一个可迭代对象,当您使用list(csv_reader)
读取CSV的所有行时,您已经穷尽了可迭代对象,因此当您想再次遍历csv_reader
时有了for
循环,就没有迭代的余地了。
由于在变量data
中有一个完整的行清单,因此您可以简单地对其进行迭代。
更改:
for row in csv_reader:
收件人:
for row in data: