为什么我的程序在写入Stocks.txt时跳过最后一个元素(特斯拉)?

时间:2017-05-23 18:10:33

标签: python dictionary for-loop

我只是想知道为什么我的程序即使找到了数据也无法写入特斯拉的数据,即使它写的是其他所有股票的数据。这是我的代码:

import requests, bs4, logging

stocks = {"google":"694653","amazon":"660463","apple":"22144","hack":"898127760101820","facebook":"296878244325128",
          "biotech":"700203","construction":"705971","nvidia":"662925","netflix":"672501","tesla":"12607212","":""}

new = open("Stocks.txt","w")

for stock in stocks:

    website = requests.get("https://www.google.ca/finance?cid=" + stocks[stock])
    website.raise_for_status()

    html = bs4.BeautifulSoup(website.text,"html.parser")

    price = (html.select(("#ref_%s_l") % stocks[stock])[0]).getText()
    change = (html.select(("#ref_%s_cp") % stocks[stock])[0]).getText()

    today = open("Stocks.txt","a")
    today.write(stock + ": " + price + "  " + change + 2*"\n")

1 个答案:

答案 0 :(得分:0)

避免这类文件关闭问题的一个好方法是使用with构造:

替换实例

new = open("Stocks.txt","w")

with open("Stocks.txt","w") as new:
    new.write ("XXX")
    #you can do all kinds of stuff here

完成缩进部分后,这将自动关闭文件。您可以阅读here以及此SO question