возвращаемое значение из одного скрипта python в другой

у меня есть два файла: script1.py и script2.py. Мне нужно вызвать script2.py от script1.py и вернуть значение из script2.py обратно script1.py. Но прикол на самом деле script1.py работает script2.py через ОС.

script1.py:

import os
print(os.system("script2.py 34"))

script2.py

import sys
def main():
    x="Hello World"+str(sys.argv[1])
    return x

if __name__ == "__main__":
    x= main()

Как вы можете видеть, я могу получить значение в script2, но не обратно в script1. Как я могу это сделать? Примечание: script2.py должен быть вызван, как если бы его выполнение командной строки. Вот почему я я использую ОС.

2 ответов


хорошо, если я правильно вас понимаю, вы хотите:

  • передать аргумент другому скрипту
  • получить вывод из другого сценария в исходный вызывающий

Я рекомендую использовать модуль подпроцесса. Самый простой способ-использовать check_output ()


рекомендуемый способ вернуть значение из одного "скрипта" python в другой-импортировать скрипт в качестве модуля Python и вызвать функции напрямую:

import another_module

value = another_module.get_value(34)

здесь another_module.py - это:

#!/usr/bin/env python
def get_value(*args):
    return "Hello World " + ":".join(map(str, args))

def main(argv):
    print(get_value(*argv[1:]))

if __name__ == "__main__":
    import sys
    main(sys.argv)

можно импортировать another_module и запустить его как скрипт из командной строки. Если вам не нужно запускать его как скрипт командной строки, вы можете удалить