Python Недопустимый синтаксис подпроцесса при передаче переменной в функцию - PullRequest
1 голос
/ 18 февраля 2020

У меня есть скрипт python, и я хочу вызвать из него подпроцесс. Следующий пример работает совершенно нормально:

Script1:

from subprocess import Popen

p = Popen('python Script2.py', shell=True)

Script2:

def execute():
    print('works!')

execute()

Однако, как только я хочу передать переменную в функцию, я получить следующую ошибку:

def execute(random_variable: str):

SyntaxError: invalid syntax

Script1:

from subprocess import Popen 

p = Popen('python Script2.py', shell=True)

Script2:

def execute(random_variable: str):
    print(random_variable)

execute(random_variable='does not work')

У кого-нибудь есть идеи, почему это может иметь место? Ничего не могу найти в интернете: (

Ответы [ 3 ]

1 голос
/ 18 февраля 2020

ок, ребята, нашли решение: просто используйте 'python3' вместо 'python', если вы на ма c ...:

p = Popen('python3 Script2.py', shell=True)

Спасибо за вашу помощь! :)

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

Вы должны использовать модуль sys, потому что popen отправляет аргументы командной строки в программу, например .. import sys def fun(arg): print(arg)</p> <p>fun(sys.argv)

и передает аргумент popen как .. # в окне import subprocess p = subprocess.Popen(['start', 'python', 'pyqt.py', 'hello'], shell=True)

0 голосов
/ 18 февраля 2020
Тип подсказки

Python введен в python3.5. если вы запустите его с версией менее python3.5, он выдаст эту ошибку.

    def execute(random_variable: str):
                               ^
SyntaxError: invalid syntax

, поэтому первый сценарий сработал, а позже - один.

...