我的脚本每秒打印一次比特币价格,但我希望将输出打印到我的txt文件中,但它只将1个价格打印到txt文件中,但我希望每个输出都输出到我的txt文件中
我的代码
import bs4
import requests
from bs4 import BeautifulSoup
import datetime
x = datetime.datetime.now()
def parsePrice():
r = requests.get('http://finance.yahoo.com/quote/BTC-USD?p=BTC-USD',
verify=False)
soup =\
bs4.BeautifulSoup(r.text)
price =\
soup.find_all('div', {'class': 'D(ib) smartphone_Mb(10px) W(70%) W(100%)--mobp smartphone_Mt(6px)'})[0].\
find('span').text
return price
while True:
print('Bitcoin prijs: ' + str(parsePrice()),' :: ',x.strftime("%d, %B"))
with open("koersen.txt", "w") as out_file:
for i in range(len(parsePrice())):
out_string = ""
out_string += str(parsePrice())
out_string += "," + str(a)
out_string += "\n"
out_file.write(out_string)
答案 0 :(得分:2)
这里
with open("koersen.txt", "w") as out_file:
您正在以写模式打开文件。因此,它将覆盖所有先前的数据。以附加模式打开它:"a"
或"w+"
更新
尝试像这样写入文件:
while True:
print('Bitcoin prijs: ' + str(parsePrice()),' :: ',x.strftime("%d, %B"))
with open("koersen.txt", "w+") as out_file:
out_string = str(parsePrice()) + "\n"
out_file.write(out_string)
答案 1 :(得分:0)
首先欢迎您使用Stackoverflow。您可以尝试更改以下代码,然后让我知道它是否适合您。
with open("koersen.txt", "w") as out_file:
for i in range(len(parsePrice())):
out_string = ""
out_string += str(parsePrice())
out_string += "," + str(a)
out_string += "\n"
out_file.writelines(out_string)
使用写行代替写。
答案 2 :(得分:0)
代替打开文件,您也可以直接登录STDOUT
控制台,然后使用tee
来写入文件目录。这将使您可以直接在终端中查看行并保存归档。
为此,您只需要中的打印语句和您的文件。
您的最终命令将是
python file.py | tee output.txt