为什么脚本会一直等待我手动终止正在运行的进程?

时间:2018-12-19 06:40:40

标签: python python-3.x time os.system

我试图制作一个脚本,以在Tor浏览器中自动浏览URL,并在几秒钟后终止Windows上的进程。 实际上一切正常,python在我的URL.text文件中随机选择一行,并使用OS命令在Tor浏览器中将其打开,然后我添加了sleep.time稍等片刻,然后终止了该过程,但是当我执行代码时它等待“ os.system”,直到我手动关闭浏览器。之后,其余代码将正常执行。

这是怎么了?我找不到。

为什么python在os.system行上等待,直到我关闭浏览器?为什么自动执行sleep命令后,它不执行os.system

import time
import subprocess
import os
import random

def random_line(afile):
    line = next(afile)
    for num, aline in enumerate(afile, 2):
      if random.randrange(num): continue
      line = aline
    return line
i = 1
while i == 1:
    with open("C:\\Users\\TPK\\PycharmProjects\\MyScripts\\venv\\urls.txt" , "r") as urlfile:
        rndurl = random_line(urlfile)
    tor = "\"C:\\Users\\TPK\\PycharmProjects\\MyScripts\\venv\\TorBrowser\\Start Tor Browser.lnk\" " + rndurl
    os.system(tor)
    time.sleep(5)
    print ("after sleep")
    os.system("taskkill /im firefox.exe")

1 个答案:

答案 0 :(得分:0)

os.system的工作方式是它不会产生在后台运行的新进程。而是等待命令完成运行,然后继续执行。对于您而言,关闭浏览器窗口时该过程完成。建议您不要使用subprocess.run,而不要使用os.system。无需等待该过程完成,它会生成它并使它在后台运行。请注意,您将需要在每个空格处分隔命令并将其放在列表中。像这样:subprocess.run(["C:\path\to\Start Tor Browser.lnk", "https://url.to.open"])