如何嵌套用于自动化目的的输入变量脚本?

时间:2019-04-05 20:33:04

标签: python subprocess sys

我正在创建一个python脚本(cmd_exec.py)以打开另一个python脚本(entername.py)。如何嵌套它,以便脚本输入字符串并自动执行回车按钮?试图记住有关enter的ASCII输入代码的问题,但找不到它。这样,当我在Powershell中运行cmd_exec.py时,它将显示"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变量,并执行/按下Enter键的脚本。这样,当我运行cmd_exec.py脚本时,我会看到它自己完成了所有工作并打印出"Hello foo"

entername.py:

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

2 个答案:

答案 0 :(得分:0)

不确定这是否有帮助或是否对您有用,但是在Bash中,您可以使用'<'运算符指定输入。

例如,如果您有一个python文件program.py,而您的输入位于input.txt中,则可以运行

$ python3 program.py < input.txt

除非有其他限制,否则您可能要采用这种方法

答案 1 :(得分:0)

您可能正在寻找sys.argvsubprocess.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