простой вызов из одного скрипта Python в другой, передавая простой параметр - PullRequest
0 голосов
/ 29 октября 2018

Вот два сценария. Первый называется first_py:

  #!/usr/bin/env python  
    import sys   

    print sys.argv[0] # prints python_script.py    
    print sys.argv[1] # prints var1
    print "first one"

Вот второй, называемый sec_py:

#!/usr/bin/env python

import sys

print sys.argv[0] # prints sec_script.py
print sys.argv[1] # prints var1

print "second one"

x=5
myVars = {'x':x}
exec(open('first_py').read(), myVars)

Как вы можете видеть, я пытаюсь передать число '5' в качестве параметра из второго сценария в первый сценарий при его вызове. Это не работает.

Как я могу исправить второй скрипт, чтобы он вызывал first_py и передавал ему значение 'x', чтобы вывести значение 5?

1 Ответ

0 голосов
/ 29 октября 2018

Попробуйте:

#!/usr/bin/env python

import sys
import subprocess, shlex
print sys.argv[0] # prints sec_script.py
print sys.argv[1] # prints var1

print "second one"

x=5
myVars = {'x':x}
print subprocess.check_output(shlex.split('first_py {0}'.format(myVars['x'])))

Есть много способов сделать то, что вы пытаетесь сделать, - мы должны обратить особое внимание на то, чтобы поместить оператор print в функцию (скажем, print_value()) в first_py, , импортируя first_py , а затем с помощью first_py.print_value(myVars['x']). Однако я думаю, что решение для подпроцесса является наиболее близким к тому, которое вы уже разработали.

PS - я бы сохранял свои сценарии как, например, first.py, а не first_py.

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