Как выполнить набор операторов в дочернем процессе в python? - PullRequest
0 голосов
/ 26 марта 2020

Я хочу выполнить набор операторов, который является комбинацией оболочки и python кода в сценарии python в дочернем процессе. Я использую метод subprocess.call (), но он принимает только одну команду оболочки в качестве ввода. Я хочу выполнить некоторый python код после команды оболочки в дочернем процессе и выйти из дочернего процесса после завершения выполнения кода оболочки + python.

command = "./darknet detector demo cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights {0}".format(latest_subdir)
proc = subprocess.Popen([command], stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
with open(result_file, 'w') as fout:
    fout.write(out)
os.system('mv {0} {1}'.format(latest_subdir,processed_dir))
s3_util.upload_results([result_file])

1 Ответ

0 голосов
/ 26 марта 2020

Когда вы отправляете строку в os.system, вы используете синтаксис командной оболочки системы. Например, это отлично работает на Linux:

os.system('ls; wc -l so.py; echo "done"')

Разделите команды точкой с запятой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...