为什么脚本会一直等到我手动终止 运行 进程?

Why script waits on a line until I terminate the running process manually?

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

这里有什么问题?我找不到。

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

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")

os.system 的工作方式是它不会在后台生成新进程 运行ning。相反,它等待命令完成 运行ning 然后继续。在您的情况下,当您关闭浏览器 window 时,该过程结束。我建议您使用 subprocess.run,而不是使用 os.system。它不会等待进程完成,而是生成它并让它 运行 在后台运行。请注意,您需要将每个 space 处的命令分开并将其放入列表中。像这样:subprocess.run(["C:\path\to\Start Tor Browser.lnk", "https://url.to.open"])