Подтвердить что ты не робот

Коды выхода Python

Где я могу найти информацию о значении кодов выхода процесса "python" в Unix? Например, если я делаю "python thisfiledoesntexist.py", я получаю код выхода 2

Резюме:

from errno import errorcode
print errorcode[2]
4b9b3361

Ответ 1

Как указано, в основном коды ошибок исходят из выполненных script и sys.exit().

Пример с не существующим файлом в качестве аргумента интерпретатора относится к другой категории. Хотя его нигде не указано, я бы предположил, что эти коды выхода являются "стандартными" кодами ошибок Linux. Существует модуль под названием errno, который содержит эти номера ошибок (коды выхода поступают из linux/include/errno.h.

I.e.: errno.ENOENT (означает "Нет такого файла или каталога" ) имеет номер 2, который совпадает с вашим примером.

Ответ 2

В руководстве python указано это относительно кодов выхода:

В некоторых системах есть соглашение о назначении конкретных значений конкретным кодам выхода, но они, как правило, недостаточно развиты; Программы Unix обычно используют 2 для синтаксических ошибок командной строки и 1 для всех других ошибок.

Итак, поскольку вы указали thisfiledoesntexist.py как аргумент командной строки, вы получите код возврата 2 (предполагая, что файл фактически не существует. В этом случае я рекомендую переименовать его в thisfiledoesexist.py. ;))

Другое, что такие ошибки синтаксического анализа, код возврата определяется запуском программы python. 0 возвращается, если вы не укажете другой код выхода с sys.exit. Сам Python не вмешивается.

Ответ 3

Может быть, кодовые константы кода из os module могут вам помочь. Также посмотрите sys.exit документацию.

Ответ 5

К сожалению, нет 100% гарантии того, что коды выхода Pythons будут такими, какими документацией заявят, что они будут: os._exit позволяет программисту python определять, какой код выхода предполагается использовать, что означает, что python file_exists_but_claims_that_it_does_not.py может выйти с os.EX_DATAERR