无法将命令的输出重定向到文件

时间:2019-03-27 14:51:12

标签: python-2.7 os.system

我的问题是执行以下代码后,我能够在shell中看到每个命令的输出。我该如何将shell输出输出到文件中

我已经尝试过以下方法,但是它不起作用

python pr.py >> pr.txt

 import os

 f=open("pr1.txt","r")
 df=0
 for i in f:

     df=df+1
     if df==4:
        break
     print i
     os.system("udstask expireimage -image" + i)

每次执行“ os.system(“ udstask expireimage -image” + i)“后,将在文件中显示命令状态

1 个答案:

答案 0 :(得分:0)

您可以尝试:

import os

f=open("pr1.txt","r")
 df=0
 for i in f:

     df=df+1
     if df==4:
        break
     print i
     os.system("udstask expireimage -image" + i + " > pr.txt")

它将命令的输出重定向到pr.txt。

您应该使用subprocess代替os.system,这样可以更有效地处理流并在调用Shell命令时为您提供更多控制:

import os
import subprocess

f=open("pr1.txt","r")
 df=0
 for i in f:

     df=df+1
     if df==4:
        break
     print i
     task = subprocess.Popen(["udstask expireimage -image" + i],stdout=subprocess.PIPE,shell=True)
     task_op = task.communicate()
     task.wait()

现在,您已将输出存储在task_op中,您可以将其写入文件或执行任何您想做的事情。它是元组形式,您可能只需要编写必需的部分。