Почему скрипт ждет в очереди, пока я не завершу запущенный процесс вручную? - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь создать скрипт для автоматического просмотра URL в браузере Tor и через несколько секунд завершить процесс в Windows.на самом деле все работает нормально, python случайным образом выбирает строку в моем файле URL.text и открывает ее в браузере 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 голосов
/ 19 декабря 2018

Способ работы os.system заключается в том, что он не порождает новый процесс, работающий в фоновом режиме.Вместо этого он ожидает завершения команды и продолжает работу.В вашем случае процесс заканчивается, когда вы закрываете окно браузера.Вместо использования os.system я бы порекомендовал использовать subprocess.run.Вместо того, чтобы ждать завершения процесса, он порождает его и запускает в фоновом режиме.Просто отметьте, что вам нужно будет отделить команду в каждом месте и поместить ее в список.Вот так: subprocess.run(["C:\path\to\Start Tor Browser.lnk", "https://url.to.open"])

...