【问题标题】:Not able to redirect output of the command to a file无法将命令的输出重定向到文件
【发布时间】:2019-03-27 14:51:11
【问题描述】:

我的问题是执行下面的代码后,我可以在 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)"后都会显示命令的状态到文件

【问题讨论】:

  • 你应该使用一个>AFAIK。
  • 已尝试但未重定向 :)
  • 你能把pr1.txt的内容贴上去还是完全是空的...strange?就我而言,它正在工作。 >> 用于追加 & > 将覆盖内容(默认情况下,如果文件不存在,则第一次创建文件)。
  • 下面是我得到的输出 [09:54:17] cse-cds2n1:/dumps/tmp # python /dumps/tmp/pr.py >> /dumps/tmp/asd.txt ACTERR-010016 图像不存在:Image_38317735 ACTERR-010016 图像不存在:Image_38317736 ACTERR-010016 图像不存在:Image_38318636
  • 这就是pr1.txt的内容?

标签: python-2.7 os.system


【解决方案1】:

你可以试试:

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 中,您可以将其写入文件或做任何您想做的事情。它是元组形式,您可能只需要编写必需的部分。

【讨论】:

    猜你喜欢
    • 2015-10-30
    • 2018-07-23
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    相关资源
    最近更新 更多