将read()和readlines()与子进程一起使用

时间:2014-11-08 05:55:30

标签: python subprocess stdout

我目前有以下内容:

    filecmd = subprocess.Popen(['git', 'diff', commit, commit2, file],
                                stdout=subprocess.PIPE, stderr=null)
    gitoutraw = filecmd.stdout.read()
    gitoutrawlines = filecmd.stdout.readlines()

这会导致gitoutrawlines为空。如何设置这两个变量?我尝试使用gitoutraw = filecmd.stdout.read()并将其转换为列表,但我没有成功。

2 个答案:

答案 0 :(得分:1)

gitoutrawlines = gitoutraw.split("\n")

答案 1 :(得分:1)

如果你这样做:

output,error = filecmd.communicate()

communicate给出(stdoutdata,stderror)的元组

输出将包含所需的结果。现在您可以根据需要进行操作。

你可以使用Tony方式