我想让我的python代码自动更新。问题是代码会在每次运行时提取四个html文件,因此浏览器中会有四个新选项卡。
我尝试使用类似问题的答案进行自动更新:What is the best way to repeatedly execute a function every x seconds in Python?
import time
starttime = time.time()
while True:
# My code here
output_file("first.html", title="First HTML Page")
# More code
output_file("second.html", title="Second HTML Page")
# Even more code
time.sleep(60.0 - ((time.time() - starttime) % 60.0))
这种方法的问题在于每分钟都会拉出四个标签 - 这意味着四分钟后我已经有了16个标签!
任何人都知道如何使用相同的标签自动更新?我甚至会删除原始标签并替换它们,即使我认为它不那么优雅。
编辑:我正在运行Windows,目前正在使用IE,但我也愿意转向使用Firefox或Chrome。
我想你要做的最好的事情是关闭整个程序并重新启动它。如果您使用的是Windows计算机,请添加
from subprocess import call
一开始,放
call("start chrome.exe") #For Google Chrome
最后,
call("taskkill /f /im chrome.exe")
这将完全关闭整个浏览器并再次启动它:P
只是告诉你,如果你使用的是Internet Explorer,请上帝哦,请不要停止“explorer.exe”。这基本上就是停止......一切。
我建议使用一些调度软件来运行你的程序,这样你就不会总是使用RAM。许多人已经说过了
正如@padraicCunningham在评论中所说,没有办法通过散景重新加载浏览器中的特定选项卡。因此,您必须通过更直接地控制浏览器来处理此问题。有多种选择,从杀死浏览器之前重新加载(如评论中所建议),通过脚本界面编写浏览器以在浏览器中处理它。
我个人对最后一个错误,这将涉及一点JavaScript。最简单的解决方案可能只是让一个页面在选项卡中打开4个其他页面,然后在计时器上重新加载它们。您可以在此处找到有关如何执行此表单的帮助:
这将要求您的Python应用程序在开始时打开控制页面,您可以使用webbrowser包执行此操作。
另一种方式(W3C不鼓励动态更新页面,因为它可能会干扰后退按钮)将在HTML的head部分添加一个刷新标记:
<meta http-equiv="refresh" content="5">
其中内容是刷新前的休眠时间(以秒为单位)
对不起,我想对此发表评论,但我缺乏这样做的声誉。
所以这是我的建议:在循环之前关闭文件。我不是那样的python,所以我不能给出一个代码示例,但也许这可能会有所帮助。
destroyWindow #or something like this. But I think that is Tkinter
close() #http://www.tutorialspoint.com/python/file_close.htm
如果要通过下载文件进行自动更新,则可以直接执行get请求,而不是通过浏览器打开它。您也可以创建一个套接字连接并执行更新。这些似乎是更可靠和优雅的方法。
浏览器方法容易出现人为干预造成的问题。但是,如果您想按照自己的方式进行操作,则可以首次打开4个选项卡。使用浏览器dom,只需刷新页面即可。所以它会像:
For every x secs:
if first time:
open the relevant tabs
else:
refresh the tabs
check if update available and do the needfull
在Python中每x秒重复执行一次函数的最佳方法是什么?
我不是很好,但我建议用某种方式使用for loop
来做到这一点。
def function(n):
for x in n:
~~~~~~~~~~~ # Blah, Blah, Blah. Some other code that you want