2012-07-03 138 views
0

是否有与java相当的pexpect?我知道我可以通过使用commons exec或processbuilder来复制功能,然后重定向stdin/stdout,然后解析流等等。但是,我的问题是,是否有即插即用的等效功能?Pexpect相当于java?

我想要运行交互式命令行程序,就像我在Python中做的那样。一个小例子是:

def start_binary(input): 
    shell_cmd = 'grep '+input+' file4.dat >> file3.dat' 
    grep = pexpect.spawn('/bin/bash', ['-c', shell_cmd]) 
    grep.expect(pexpect.EOF) 
    shell_cmd = './myProg -c' 
    myProg = pexpect.spawn('/bin/bash', ['-c', shell_cmd]) 
    myProg.expect('Next DATA file') 
    file_list = ['file1.dat', 'file2.dat', 'file3.dat'] 
    for this_file in file_list: 
     myProg.sendline(this_file) 
    myProg.sendline() 
    return myProg 

然后我以交互方式(发送命令,获取/解析结果等)使用myProg。我可以通过myProg.before得到两个电话之间的结果等

有没有在Java中同样简单的方式提供相同的功能包?

+0

可能不是没有本机代码; Java的子进程处理非常弱。 –

回答

0

一个简单的Google搜索“java expect”,发现expect4j作为列表中的第一项,ExpectJ作为第二项列出。

+0

抱歉不知道要搜索什么。尝试搜索“Java的Pexpect的”或者“Java的Pexpect的等价物”或“Java运行交互式控制台程序”,并告诉我在哪个页面找到“第一项”。如果我知道这很“简单”,我就不会有任何疑问。 您应该遵守规则:“如果有机会在谷歌中使用关键字找到它,请不要问它!” 无论如何感谢提示。我会尽量不要问任何其他“不具建设性”的问题...... – electrique