2015-04-02 11 views
0

У меня есть этот кусок кода и напечатайте вывод в txt-файле. Однако всякий раз, когда я открываю файл, f = open («out.txt», 'w'), он показывает неожиданный отступ. Наверное, я помещаю строку кода в неправильную позицию. Может кто-нибудь помочь.Как перенаправить вывод инструкции print (if-else) в текстовый файл в Python

if(cp<0): 

    print("No Common Predecessor") 
elif (posa < posb): 

    if(posa<0): 
     posa=0 
    print("Common Predecessor: %s" %n[posa]) 
else: 

    if(posb < 0): 
     posb=0 
    print("Common Predecessor: %s" %m[posb]) 
+0

Какую версию python вы используете? –

+0

Привет, я использую python 3.5 –

ответ

1

В Python3 выход Перенаправление так просто, как

print(....., file = open("filename",'w')) 

Направить docs

В вашем конкретном случае, вы можете даже использовать синтаксис with open как в

if(cp<0): 

    print("No Common Predecessor") 
elif (posa < posb): 

    if(posa<0): 
     posa=0 
    with open('out.txt','w')as f: 
     print("Common Predecessor: %s" %n[posa]) 
     f.write("Common Predecessor: %s" %n[posa]) 
else: 

    if(posb < 0): 
     posb=0 
    with open('anotherout.txt','w')as f: 
     print("Common Predecessor: %s" %m[posb]) 
     f.write("Common Predecessor: %s" %m[posb]) 

Примечание. Всегда лучше использовать 'a' (append) вместо 'w' Если вы повторно выполняете программу.

+0

print («Обычный предшественник:% s»% n [posa], file = "out.txt") Нужно ли это писать? получение этой ошибки. AttributeError: объект 'str' не имеет атрибута 'write' –

+0

Нужно ли что-нибудь добавить? –

+0

Большое спасибо. Это сработало. Еще одно найденное решение, Просто добавьте эти две строки вверху кода, оставив все остальное. Будет также работать. 'import sys ' sys.stdout = open ('out.txt', 'w') –