Python 如何在不必按enter/confirm s.th的情况下运行shell脚本。中间

Python 如何在不必按enter/confirm s.th的情况下运行shell脚本。中间,python,linux,shell,Python,Linux,Shell,我目前正在编写一个shell脚本,它与许多python脚本交互。在其中一个Python脚本中,我调用grass时没有显式启动它。当我运行shell脚本时,我必须在我调用grass的地方按enter键(这是我从正式使用的代码): 我的问题是,我希望这个过程自动运行,而不必每次按enter键! 我已经尝试了很多选项,比如pexpect、uinput(由于模块的问题,工作不太好)。我知道在windows中有msvcrt模块,但我正在使用linux。。。有什么办法解决这个问题吗?使用pexpect库实现

我目前正在编写一个shell脚本,它与许多python脚本交互。在其中一个Python脚本中,我调用grass时没有显式启动它。当我运行shell脚本时,我必须在我调用grass的地方按enter键(这是我从正式使用的代码):

我的问题是,我希望这个过程自动运行,而不必每次按enter键!
我已经尝试了很多选项,比如pexpect、uinput(由于模块的问题,工作不太好)。我知道在windows中有msvcrt模块,但我正在使用linux。。。有什么办法解决这个问题吗?

使用pexpect库实现expect功能

下面是一个与需要用户键入密码的应用程序交互的示例:

child = pexpect.spawn('your command')
child.expect('Enter password:')
child.sendline('your password')
child.expect(pexpect.EOF, timeout=None)
cmd_show_data =  child.before
cmd_output = cmd_show_data.split('\r\n')
for data in cmd_output:
    print data

我终于找到了一种简单快捷的模拟按键的方法:

只需安装xdotool,然后使用以下代码进行模拟,例如回车键:

import subprocess
subprocess.call(["xdotool","key","Return"])

白色
\n
到stdin?实际上,您可以尝试向进程的stdin发送换行符,或者如果不需要,可以尝试完全关闭进程的stdin。是的,我已经尝试添加/n和/r/n,但我的控制台中只显示了空行,并且没有激活以下进程。但是也许我把这个词放错地方了。你会把它放在我发布的代码里的什么地方呢?是的,我已经试过了。但是我应该发出什么样的命令呢?我的整个剧本?
import subprocess
subprocess.call(["xdotool","key","Return"])