如何在不使用next()的情况下读取csv文件?

时间:2018-11-27 20:22:32

标签: python python-3.x csv

我编写了这段代码,以从csv格式的文件中读取一些行,但是它给出了错误“ StopIteration”,我认为这是因为它到达了文件的结尾...

Python3代码如下:

    with open("trafficpcap.txt",newline = "") as filedns:
        readerpcap = csv.reader(filedns,delimiter = "\t")
        rowDns = []
        for count in readerpcap:
            rowDns = next(readerpcap)
            print("linea letta: ",rowDns)
            if(rowDns[0].find(ipdst) != -1):
                i = 0
                ipdns = ""
                rowd = rowDns[0]
                while i < len(rowDns[0]):
                    if(rowd[i] != ","):
                        ipdns = ipdns + rowd[i]
                        i = i + 1
                    else: break

也许for循环出了问题?

这是输入文件的示例:

52.48.184.207,52.16.213.80  pnp.aptoide.com
216.58.198.33   lh4.ggpht.com
193.206.135.13  r2---sn-b5gg-ca9e.gvt1.com
34.246.212.92,34.240.116.214    webservices.aptwords.net
151.101.66.202,151.101.130.202,151.101.2.202,151.101.194.202    sdk.foursquare.com
31.13.90.2  graph.facebook.com
13.32.123.222,13.32.123.156,13.32.123.136,13.32.123.7   config2.mparticle.com

2 个答案:

答案 0 :(得分:4)

您从不需要next()(除非您有意跳过行)。 for循环正在为您调用

就是

with open("file.csv", newline='') as f:
    reader = csv.reader(f, delimiter="\t")
    for row in reader:
        # do row things 

参考csv.reader usage

答案 1 :(得分:0)

您还可以省略任何csv库,只需打开文件并读取(加载到列表/嵌套列表)即可:

#1
file_name = 'file_name.txt'
file_loaded = list()
with open(file_name, 'r') as file:
    file_loaded = file.readlines()

#2
file_name = 'file_name.txt'
delimeter=','
file_loaded = list()
with open(file_name, 'r') as file:
    for line in file:
        file_loaded.append(line.split(delimeter))
相关问题