如何停止subprocess.Popen在python中等待用户输入

时间:2014-05-05 15:11:51

标签: python latex subprocess

我在python中有以下代码:

import subprocess
var = subprocess.Popen(["pdflatex","file.tex"])

其中var是一个丢弃变量,因为我不关心返回变量。它做我想要的(从乳胶文件file.tex生成pdf文件),但然后等待用户输入。这些是程序的最后一行,我只想让它在不等待输入的情况下结束。我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

将stdin重定向到devnull,以避免子进程暂停等待用户输入:

import os
from subprocess import Popen
try:
    from subprocess import DEVNULL # Python 3
except ImportError:
    DEVNULL = open(os.devnull, 'r+b', 0)

Popen(['pdflatex', 'file.tex'], stdin=DEVNULL, stdout=DEVNULL, stderr=DEVNULL)

我认为你也不关心stdout / stderr。

答案 1 :(得分:0)

如果你不关心输出,试试这个:

args = ["pdflatex","file.tex"]
var = subprocess.Popen(args, stdout=subprocess.PIPE)
trash = var.communicate() # dump the output of the program calls