为什么我的Python程序在运行第一个循环后关闭?

时间:2018-06-07 20:04:45

标签: python csv

我是Python和刮刮手的新手。我试图运行两个循环。一个人去,从一页抓住id。然后,使用这些ID,我调用另一个API来获取更多信息/属性。

但是当我运行这个程序时,它只运行第一位(获取ID),但随后关闭并且不运行第二部分。我觉得我在这里遗漏了一些关于Python控制流程的基本内容。当我在终端中运行它时,为什么Python在第一个循环后关闭?

import requests
import csv
import time
import json
from bs4 import BeautifulSoup, Tag

file = open('parcelids.csv','w')
writer = csv.writer(file)
writer.writerow(['parcelId'])

for x in range(1,10):
    time.sleep(1) # slowing it down
    url = 'http://apixyz/Parcel.aspx?Pid=' + str(x)
    source = requests.get(url)
    response = source.content
    soup = BeautifulSoup(response, 'html.parser')
    parcelId = soup.find("span", id="MainContent_lblMblu").text.strip()
    writer.writerow([parcelId])

out = open('mapdata.csv','w')   
with open('parcelIds.csv', 'r') as in1:
    reader = csv.reader(in1)
    writer = csv.writer(out)
    next(reader, None) # skip header
    for row in reader:
        row = ''.join(row[0].split())[:-2].upper().replace('/','-') #formatting
        url="https://api.io/api/properties/"
        url1=url+row
        time.sleep(1) # slowing it down
        response = requests.get(url1)       
        resp_json_payload = response.json()
        address = resp_json_payload['property']['address']
        writer.writerow([address])

1 个答案:

答案 0 :(得分:2)

如果您在Windows中运行(文件名不区分大小写),那么当您重新打开它以便从中读取时,您打开以进行写入的文件(parcelids.csv)仍处于打开状态。

尝试关闭文件,然后再打开文件进行阅读。