Если вы не хотите использовать 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()
Я хочу указать, что это не самый простой и прямой путь.