如果比特币价格达到4,500美元,我写了一个Python脚本来显示桌面通知,但如果价格达到,脚本将退出。如何让脚本保持运行?
以下是代码:
import time
import requests
import gi
gi.require_version('Notify', '0.7')
from gi.repository import Notify
r = requests.get("https://api.coindesk.com/v1/bpi/currentprice.json")
r.json()
resp = r.json()
price = resp["bpi"]["USD"]["rate_float"]
top = 4200
if price > top :
# One time initialization of libnotify
Notify.init("Crypto Notify")
# Create the notification object
summary = "Crypto Alert!"
body = "BTC : $ %s" % (price)
notification = Notify.Notification.new(
summary,
body, # Optional
)
# Actually show on screen
notification.show()
else:
while price < top :
r =requests.get("https://api.coindesk.com/v1/bpi/currentprice.json")
print price
time.sleep(10)
答案 0 :(得分:0)
所以从我看来,似乎你的脚本被编写为在一次传递中执行,即所有语句只会被执行一次。所以正在发生的事情是你的脚本等待价格更大的条件然后变为真,一旦它是真的它执行IF块的其余脚本。
你需要的是一个封装脚本的循环,谁的结束条件需要很长时间才能实现无限循环但更安全。
您可以尝试的另一种方法是将脚本保持在无限循环中,只需在使用ctrl + c时退出脚本
虽然它不是很干净的方法。
示例代码:
import time
import requests
import gi
gi.require_version('Notify', '0.7')
from gi.repository import Notify
while true :
r = requests.get("https://api.coindesk.com/v1/bpi/currentprice.json")
r.json()
resp = r.json()
price = resp["bpi"]["USD"]["rate_float"]
top = 4200
if price > top :
# One time initialization of libnotify
Notify.init("Crypto Notify")
# Create the notification object
summary = "Crypto Alert!"
body = "BTC : $ %s" % (price)
notification = Notify.Notification.new(summary,body)
# Actually show on screen
notification.show()
else:
r =requests.get("https://api.coindesk.com/v1/bpi/currentprice.json")
print price
time.sleep(10)