Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用csv读取器后无法用于_Python_Python 3.x_Csv - Fatal编程技术网

Python 使用csv读取器后无法用于

Python 使用csv读取器后无法用于,python,python-3.x,csv,Python,Python 3.x,Csv,我的任务是编写一个脚本来检查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 =

我的任务是编写一个脚本来检查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 

首先,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)

问题识别:

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\U阅读器)
中,由于这一行,您正在耗尽变量。所以它无法在for循环中循环

因此,您可以读取csv文件,如

input_file = open("test_list.csv", "r").readlines()
print(len(input_file))

然后使用
csv.reader()

解决方案:

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)

问题识别:

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\U阅读器)
中,由于这一行,您正在耗尽变量。所以它无法在for循环中循环

因此,您可以读取csv文件,如

input_file = open("test_list.csv", "r").readlines()
print(len(input_file))

然后使用
csv.reader()

由于变量
data
中具体化了一个完整的行列表,因此可以简单地对其进行迭代

更改:

for row in csv_reader:
致:


csv.reader
返回一个iterable,当您使用
list(csv\u reader)
读取csv的所有行时,您已经耗尽了iterable,因此当您想使用
for
循环再次迭代
csv\u reader
时,它没有什么可迭代的了

由于变量
data
中具体化了一个完整的行列表,因此可以简单地对其进行迭代

更改:

for row in csv_reader:
致:


也许您还应该打印
数据来帮助调试?您希望得到什么以及
如何处理行:40
不是正确的输出?如果你能从
tset\u list.csv
发布一个样本数据和你想要的输出,那将是非常有帮助的。我不认为这是csv数据的问题,因为
data=list(csv\u reader)row\u count=len(data)没有进入for循环的问题
这两行。也许您还应该打印
数据来帮助调试?您期望得到什么以及
如何处理行:40
不是正确的输出?如果您可以发布来自
tset\u list.csv
的示例数据和您所需的输出,这将非常有用。我认为这不是csv数据的问题,问题是由于
data=list(csv\u reader)row\u count=len(data)
这两行,它没有进入for循环。