Не удалось перенаправить вывод команды в файл - PullRequest
0 голосов
/ 27 марта 2019

Моя проблема в том, что после выполнения приведенного ниже кода я могу видеть результаты каждой команды в оболочке.Как я могу получить этот вывод оболочки в файл

Я пробовал с ниже, но он не работает

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 голосов
/ 27 марта 2019

Вы можете попробовать что-то вроде:

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, который имеет более эффективную обработку потока и дает вам больше контроля при вызове команды оболочки:

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, который вы можете записать в файл или делать все, что пожелаете. Он находится в форме кортежа, и вам может потребоваться написать только необходимую часть.

...