【发布时间】:2016-06-17 03:31:54
【问题描述】:
当我从 python 运行这个子进程命令时,似乎 python 停止并且从不输出任何东西:
msg = subprocess.call(['/Users/admirmonteiro/bin/Praat', '/Users/admirmonteiro/tmp/tmp.praat'])
但是当我从终端运行命令本身时,它会按应有的方式运行和关闭:
Praat /tmp/tmp.praat
有人能告诉我为什么 python 没有完成代码并且停止并且没有输出任何东西吗?
谢谢!
【问题讨论】:
-
你需要对子进程的stdin stdout和stderr做点什么吗?子流程会产生大量输出,还是期望输入?也许通过从父进程继承,它们导致子进程认为有数据要读取,因此它正在等待能够读取标准输入?
-
不,我不相信(Praat 的输入是 tmp.praat),根本没有输出,它实际上打开了 praat 工具本身并希望我运行该文件,当我运行时subprocess 命令有一个输出。我不想要这个过程。我希望它就像我从终端运行它一样,当我调用它时,它运行 Praat /tmp/tmp.praat 并自行关闭。
-
如果您运行“cat /dev/null | Praat /tmp/tmp.praat | cat”之类的命令,它是否可以在命令行上工作?想知道 Praat 进程是否正在检测 tty 标准输入/标准输出并因此而表现不同。
-
嗨,汤姆,是的,它没有错误。
-
在终端输入
type Praat会看到什么?如果您传递相同的文件/tmp/tmp.praat而不是/User.../tmp.praat,会发生什么?
标签: python terminal subprocess