2017-01-30 3 views
0

У меня есть обезглавленное устройство, которое можно удаленно обновлять.Bash - Как поймать ошибку синтаксиса Python 3

Аппаратное обеспечение не более чем запускает скрипт python при загрузке. Я пытаюсь повысить надежность этой системы обновления.

Если бы я обновить оборудование с прослушивается питон скрипт (например, неправильно пишется print или return (это случается!) Или отсутствует двоеточие), то интерпретатор питона откажет запустить его, как он разбирает весь сначала скрипт.

В этом «разборе» он вернет синтаксическую ошибку. Как я могу поймать это и выполнить другое действие?

+2

вы можете сделать 'питон foo.py 2> & 1 | grep "SyntaxError:" '(так как код возврата вам не поможет: это 1 на недопустимый синтаксис), полагайтесь на код возврата' grep' и полагайтесь на 'PIPESTATUS' для кода возврата скрипта –

+2

Я бы рекомендовал использовать python linter (pep8), чтобы вы всегда были уверены, что у вас нет синтаксических ошибок – edi9999

+0

, вы также можете попытаться скомпилировать свой код (http://stackoverflow.com/questions/471191/why-compile-python-code) –

ответ

0

Вы можете сделать сценарий оболочки, чтобы поймать SyntaxError используя execfile как:

try: 
    execfile('/path/to/script.py') 
except SyntaxError: 
    # do the other thing 
Смежные вопросы