#python-2.7 #os.system
#python-2.7 #os.system
Вопрос:
Моя проблема в том, что после выполнения приведенного ниже кода я могу видеть выходные данные каждой команды в командной оболочке. Как я могу получить этот вывод оболочки в файл
Я пробовал с приведенным ниже, но это не работает
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. Вы должны использовать один
>
AFAIK.2. Пытался, но не перенаправляет 🙂
3. Можете ли вы вставить содержимое
pr1.txt
или оно полностью пустое …strange
? В моем случае это работает.>>
для добавления amp;>
переопределит содержимое (по умолчанию оба создают файл с первого раза, если он не существует).4. Ниже приведен вывод, который я получаю [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
5. Так это содержимое
pr1.txt
?
Ответ №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
, который имеет более эффективную обработку потока и дает вам больше контроля при вызове команды оболочки:
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
, которые вы можете записать в файл или делать все, что пожелаете. Это в форме кортежа, и вам, возможно, потребуется написать только обязательную часть.