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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何嵌套为自动化目的输入变量的脚本?相关的知识,希望对你有一定的参考价值。

我正在创建一个python脚本(cmd_exec.py)来打开另一个python脚本(entername.py)。如何嵌套它以便脚本输入字符串并自动执行输入按钮?试图记住有关输入的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脚本和脚本中执行/按下回车键。因此,当我运行cmd_exec.py脚本时,我会看到它自己完成并打印出"Hello foo"

entername.py:

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

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

例如,如果你有一个python文件program.py,你的输入在input.txt中就可以运行了

$ python3 program.py < input.txt

除非有其他限制,否则您可能希望采用此方法

另一答案

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

以上是关于如何嵌套为自动化目的输入变量的脚本?的主要内容,如果未能解决你的问题,请参考以下文章

条件片段和导航重用

在创建VSCode片段时,如何将变量转换为title-case(如TitleCase)?

如何更改片段中的主要活动变量

嵌套类:如何访问封闭类中的成员变量

带有tkinter输入框的动态变量

以编程方式嵌套的片段不反映导航上的父生命周期