【问题标题】:the last output running on infinite loop - Python在无限循环上运行的最后一个输出 - Python
【发布时间】:2021-09-23 04:18:21
【问题描述】:

为了运行需要链接和日期的 to_scrape 函数,我的 python 代码从第 1 行中选择链接并从第 2 行中选择日期,最后一个输出无限运行。什么是阅读和让链接+日期(行的两列)工作/获取数据而不会卡住循环的最佳方法

start = 0 
end = 2
csvfile = open('file.csv', 'r')
csvFileArray = []
for row in csv.reader(csvfile):
    csvFileArray.append(row[0])    

csvFileDate = []
for row in csv.reader(csvfile):
    csvFileDate.append(row[1])    

csvfile.close()

alums = csvFileArray[start:end]
alumdate = csvFileDate[start:end]


for i in alums:
    for j in alumdate:
    
        start+=1
        print(i)
        print(start)
        to_scrape(i,j)

【问题讨论】:

    标签: python infinite-loop file-handling


    【解决方案1】:

    而不是以下(你做了什么):

    for i in alums:
        for j in alumdate:
        
            start+=1
            print(i)
            print(start)
            to_scrape(i,j)
    

    你应该使用zip函数,它可以并行遍历多个序列:

    for i, j in zip(alums, alumdate):
            start+=1
            print(i)
            print(start)
            to_scrape(i,j)
    

    【讨论】:

    • @Aditya,但这怎么会导致无限循环。您在读取文件本身时遇到了错误。我不知道它是如何解决您的问题的
    【解决方案2】:
    for row in csv.reader(csvfile):
        csvFileArray.append(row[0])    
    
    for row in csv.reader(csvfile):
        csvFileDate.append(row[1])  
    

    这两个 for 循环并没有按照您的想法做。他们不断地重新打开csvfile,导致无限循环。另请注意,您需要同时处理连续的两个项目。否则,您将不得不重置文件并重新从头开始读取文件。

    这是包含错误修复的完整代码。

    start = 0 
    end = 2
    
    csvFileArray = []
    csvFileDate = []
    
    #requires newline='' if you want to use it with csv.reader
    with open('file.csv', newline='') as csvfile
        csv_reader = csv.reader(csvfile):
        for row in csv_reader:
            csvFileArray.append(row[0])
            csvFileDate.append(row[1])
    
    alums = csvFileArray[start:end]
    alumdate = csvFileDate[start:end]
    
    for (i,j,start) in zip(alums, alumdate, range(1, len(alums)):
            print(start, i, j)
            to_scrape(i,j)
    

    【讨论】:

    • 非常感谢,我再看看!
    猜你喜欢
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 2012-06-24
    相关资源
    最近更新 更多