Я хотел бы получить stdout, stderr и resultcode функции модуля, вызванной из основной программы. Я думал, что подпроцесс был ключом, но мне не удается передать функцию модуля подпроцессу.Функция вызова Python из модуля в подпроцессе
Что у меня есть:
#my_module.py
def run(args):
do stuff
print this
return THAT
if name == "__main__":
args = read_args()
run(args)
.
#my_main_script.py
import subprocess as sp
import my_module
p = sp.Popen(my_module.run(args), stdout=sp.PIPE, stderr=sp.PIPE)
out, err = p.communicate()
result = p.resultcode
Что происходит: Видимо модуль подпроцесс делает что-то с тем, что вернулся из my_module.run() провоцируя аварии:
если THAT = list_of_lists
ошибка: AttributeError: "sublist" object has no attribute rfind
THAT = ["a","b",0]
если ошибка: TypeError: execv() arg 2 must contain only strings
если THAT = ["a","b"]
ошибка: OSError: [Errno 2] No such file or directory
So subprocess, по-видимому, хочет, чтобы THAT был списком, содержащим путь к файлам ???
Что ваши read_args() определение? Я пытаюсь что-то подобное, но не могу заставить его работать. – TobyTobyo