Вот хакерский способ воспользоваться опцией -c
для интерпретатора Python:
>>> import subprocess
>>> pycode = """
... import sys
... if sys.argv[1] == 'foo':
... print('bar')
... else:
... print('unrecognized arg')
... """
>>> result = subprocess.run(['python', '-c', pycode, 'bar'], stdout=subprocess.PIPE)
>>> print(result.stdout.decode())
unrecognized arg
>>> result = subprocess.run(['python', '-c', pycode, 'foo'], stdout=subprocess.PIPE)
>>> print(result.stdout.decode())
bar
Это может привести к таким проблемам, как некоторые платформы, ограничивающие размер того, что вы передаете в качестве аргументов. Я попытался сделать это, используя stdin
, который примет интерпретатор Python, но тогда он не примет аргументы!