2010-03-01 1 views
2

Я всегда был тяжелым пользователем Notepad2, так как он быстрый, многофункциональный и поддерживает подсветку синтаксиса. Недавно я использовал его для Python.Как заставить Python ждать, чтобы вы могли прочитать результат?

Моя проблема: когда я закончу редактирование определенного исходного кода Python и попытаюсь запустить его, экран исчезнет, ​​прежде чем я смогу увидеть выход. Есть ли какой-либо способ заставить результаты ждать, чтобы я мог прочитать их, не используя функцию ввода() или времени задержки? В противном случае мне пришлось бы использовать IDLE из-за вывода, который перестает читать.

(Мои извинения, если этот вопрос глупый один, но я очень новичок в Python и программирования в целом.)

ответ

3

Если вы не хотите использовать raw_input() или input(), вы можете записать свой вывод (stdout, stderr) в файл или файлы.

Вы можете использовать модуль logging или просто перенаправить sys.stdout и sys.stderr.

Я бы предложил использовать комбинацию logging и traceback, если вы хотите регистрировать ошибки со своим стеком следов.

Что-то вроде этого, может быть:

import logging, traceback 
logging.basicConfig(filename=r'C:\Temp\log.txt', level=logging.DEBUG) 

try: 
    #do some stuff 
    logging.debug('I did some stuff!') 
except SomeException: 
    logging.error(traceback.format_exc()) 

Вот пример перенаправления stdout и stderr:

if __name__ == '__main__': 
    save_out = sys.stdout # save the original stdout so you can put it back later 
    out_file = open(r'C:\Temp\out.txt', 'w') 
    sys.stdout = out_file 

    save_err = sys.stderr 
    err_file = open(r'C:\Temp\err.txt', 'w') 
    sys.stderr = err_file 

    main() #call your main function 

    sys.stdout = save_out # set stdout back to it's original object 
    sys.stderr = save_err 

    out_file.close() 
    err_file.close() 

Я собираюсь отметить, что это не самый простой или самый прямой путь идти.

3

вы могли бы начать в окне командной строки. например .:

c:\tmp\python>main.py 

добавления raw_input() (или input() в py3k) в конце сценария позволит вам заморозить его, пока не войдете нажата, но это не очень хорошая вещь, чтобы сделать.

+0

Это означает, что я должен одновременно открыть как окно команд, так и Notepad2, одно для редактирования и одно для вывода, да? – anonnoir

+0

@user: предположим, это проблема? – SilentGhost

+0

My Python находится в папке «C: \ Python31 \ python.exe». Если бы я хотел открыть файл, мне пришлось бы поместить его и путь к нему после него, чтобы открыть его в окне команд. Может быть, есть другой ярлык, который я могу использовать? – anonnoir

0

Вы можете добавить звонок в raw_input() в конец вашего скрипта, чтобы он дождался нажатия Enter.

3

Это «проблема» с Notepad2, а не с самим Python.

Если вы не хотите использовать вход()/sleep (или любую другую функцию блокировки) в своих сценариях, я думаю, вам нужно обратиться к настройкам в Notepad2 и посмотреть, что это может предложить.

Смежные вопросы