簡體   English   中英

在無限循環中運行的最后一個輸出 - Python

[英]the last output running on infinite loop - Python

我的 python 代碼從第 1 行選擇鏈接,從第 2 行選擇日期,以便運行需要鏈接和日期的 to_scrape 函數,最后輸出無限運行。 閱讀並讓鏈接+日期(行的兩列)工作/獲取數據而不會卡住循環的最佳方法是什么

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)

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

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)
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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM