В Python как мне ссылаться на аргумент, переданный из «subprocess.run» в выполняемом подпроцессе? - PullRequest
0 голосов
/ 01 февраля 2020

В моей основной функции я хочу передать переменную подпроцессу, заставить подпроцесс что-то сделать с переменной и вернуть управление основному процессу.

Я прочитал несколько сообщений о передаче переменных (аргументы) для подпроцесса, но я ничего не могу найти при доступе к переменной в подпроцессе.

Вот пример того, что я пытаюсь сделать.

a.py

import subprocess

if __name__ == "__main__":

    # Code to generate fn_new

    fn_new = r"path\to\file.ext"    # I want to pass this variable to b.py

    subprocess.run(["python", "b.py", fn_new])    # I read that this is how to pass the var to the subprocess

    # Additional code that depends on fn_new

b.py

print(fn_new)

# NOTE 1: There are several things being done with the variable fn_new
# NOTE 2: I'm not passing anything back to a.py

В b.py я попытался from a import fn_new, но он ожидает, что fn_new появится за пределами if __name__ == "__main__": в a.py. Я не хочу перемещать "fn_new" в основной сценарий, потому что мне нужно было бы перенести всю обработку, которая идет вместе с ним.

Как получить доступ к переменной "fn_new" из subprocess.run без импорт? Или я поступаю неправильно?

1 Ответ

0 голосов
/ 01 февраля 2020

К сожалению, переменная не будет вызываться с тем же именем (fn_new). Вы можете получить его по позиции. Вот простой скрипт для начала работы.

b.py


import sys
print(sys.argv)

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