繁体   English   中英

如何告诉 Python 脚本在运行后关闭

[英]How to tell a Python script to close after running

我是一个完整的 python 初学者......我写了一个简单的脚本,它从网站上提取一些数据并将其保存到一个文本文件中,但是在运行脚本后它只是坐在那里并且不会“终止”。 由于我将它作为 Windows 任务运行,因此我需要在运行后自行关闭它。 有没有办法在脚本完成后告诉 python 关闭终端? 我到处寻找,似乎大多数人都试图做相反的事情,在代码运行后保持打开状态。 不确定这是否重要,但我只是在运行 .py 文件,而不是在 VS 或 PyCharm 中。 提前致谢。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from datetime import date




driver = webdriver.Chrome()
driver.get("MyURL")
time.sleep(11)
first = driver.find_element_by_xpath('/html/body/main/div[2]/div/div/div/div[2]/div[1]/div/div[2]/div[2]/div/ul/table/tbody/tr[3]/td[2]/div/span[1]')
second = driver.find_element_by_xpath('/html/body/main/div[2]/div/div/div/div[2]/div[1]/div/div[2]/div[2]/div/ul/table/tbody/tr[2]/td[2]/div/span[1]')
third = driver.find_element_by_xpath('/html/body/main/div[2]/div/div/div/div[2]/div[1]/div/div[2]/div[2]/div/ul/table/tbody/tr[1]/td[2]/div/span[1]')

first = first.text
second = second.text
third = third.text

print(first, second, third)

today = date.today()
today1 = today.strftime('%b %d %Y')

list = (today1, first, second, third)
print(list)

file = open('test.txt', 'a')
file.write(today1)
file.write(' ')
file.write(first)
file.write(' ')
file.write(second)
file.write(' ')
file.write(third)
file.write('\n')
file.close()


driver.close()

对于 1. 您需要将正在运行的进程发送到后台并从当前 shell 中删除关联的作业。

Ctrl + Z并键入bg将安装过程发送到后台,然后键入disown

您现在可以关闭终端,该进程仍将处于活动状态。 您可以打开另一个终端并使用ps -aef检查其进程 ID

在我的情况下,进程 ID 是14426 不幸的是,没有简单的方法可以将它重新附加到另一个终端(请参阅如何将终端附加到分离的进程?),除非您使用了基于screen东西。

对于 2. 您可以使用以下命令:

while kill -0 14426 >/dev/null 2>&1; do sleep 5 ; done ; echo "ok" while kill -0 14426 >/dev/null 2>&1; do sleep 5 ; done ; echo "ok"当进程从另一个终端结束时,它会打印ok 你当然可以用更复杂的东西来改变这个echo命令。

来源: BASH:启动后台进程并检查它何时结束

好的,我找到了一些有用的东西。 我注意到即使在执行driver.close()行之后,chromedriver 进程仍在运行。 我继续杀了这个过程,脚本立即关闭。 我猜driver.close()关闭了 chrome 窗口但没有杀死 chromedriver 所以脚本挂起等待进程退出。 我用driver.quit()替换了driver.close() ,现在脚本在运行后关闭。 谢谢大家的帮助!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM