Как вложить сценарий, который вводит переменную для целей автоматизации? - PullRequest
2 голосов
/ 05 апреля 2019

Я создаю скрипт Python (cmd_exec.py), чтобы открыть другой скрипт Python (entername.py). Как мне сделать так, чтобы скрипт вводил строку и автоматически выполнял кнопку ввода? Попытка вспомнить вопрос о входном коде ASCII для ввода, но не могу его найти. Так что когда я запускаю cmd_exec.py в powershell, он будет отображать "Hello foo":

cmd_exec.py:

import subprocess, sys

p = subprocess.Popen(["powershell.exe", "py C:\\Users\\uname\\PProjects\\cmdauto\\entername.py"], stdout=sys.stdout)
p.communicate()

Я хочу, чтобы переменная maname была вставлена ​​в скрипт entername.py и скрипт для выполнения / нажмите кнопку ввода. Так что когда я запускаю скрипт cmd_exec.py, я вижу, что он все делает сам и выводит "Hello foo"

entername.py:

maname = "foo"
person = input('Enter your name: ')
print('Hello', person)

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Возможно, вы ищете sys.argv и subprocess.getstatusoutput ()

import subprocess
maname = "foo"
person = input('Enter your name: ')
print('Hello', person)
# not  sure why powershell is here, normally would be only `python C:\\Users\\uname\\PProjects\\cmdauto\\entername.py {person}`
x = subprocess.getstatusoutput(f"powershell.exe 'py C:\\Users\\uname\\PProjects\\cmdauto\\entername.py {person}'") 
print(x)
# (0, 'python f:\\entername.py')

# entername.py 
import sys
person = int(sys.argv[1]) # get the 2nd item on `argv` list, the 1st is the script name
0 голосов
/ 05 апреля 2019

Не уверен, поможет ли это или это сработает для вас, но в Bash вы можете указать ввод с помощью оператора <. </p>

Например, если у вас есть файл python program.py и ваши входные данные находятся в input.txt, вы можете запустить

$ python3 program.py < input.txt

Возможно, вы захотите использовать этот подход, если у вас нет других ограничений

...