2015-03-02 229 views
3

我想制作一个自动脚本,它应该在同一个终端窗口(Mac OS X Yosemite)中运行一组命令。但是我无法到达可以继续添加命令的阶段。python - subprocess - 用文件打开终端

Automator.py

path = '/Users/aakashshah/documents/python/test.py' 

def subprocess_cmd(command): 
    process = subprocess.Popen(command,stdout=subprocess.PIPE, shell=True) 
    proc_stdout = process.communicate()[0].strip() 
    print(proc_stdout) 

subprocess_cmd('cd /Users/aakashshah/documents/python/ | open -a Terminal | python test.py') 

结果是终端应用程序只用根名称打开。

类似的命令在终端中在相同的终端窗口中以期望的输出运行。

谢谢。任何帮助,将不胜感激。

+0

'|应该是什么意思?你想从'cd','open','python'建立一个Unix管道吗? – 2015-03-02 10:17:46

回答

0

可以通过管道使用POPEN和使用CWD:

from subprocess import Popen,PIPE 


def subprocess_cmd(dr,cmd1,cmd2): 
    p1 = Popen(cmd1.split(),stdout=PIPE,cwd=dr) 
    p2 = Popen(cmd2.split(),stdin=p1.stdout,stdout=PIPE,cwd=dr) 
    p1.stdout.close() 
    return p2.communicate()[0] 

subprocess_cmd('/Users/aakashshah/documents/python/','open -a Terminal','python test.py') 

如果你只是想运行Python文件的第一CMD1是不必要的。

+0

仍然显示相同的结果。终端窗口打开为空。 – technazi 2015-03-02 10:47:46

+0

你为什么要开一个终端? – 2015-03-02 10:48:16

+0

嗯,你是对的。我更专注于外观和感觉。我想打开基本的ftp连接并解压文件。我认为这一点。谢谢。 – technazi 2015-03-02 11:00:10