Как работать с файлом в Python без вложенных исключений - PullRequest
0 голосов
/ 09 марта 2011

Я пишу скрипт на Python для выполнения некоторых основных функций CM, таких как тегирование в Subversion. Единственная проверка ошибок, которую я знаю, как сделать в python, - это перехват исключений. Так как пишу код в тесты на наличие различных файлов и каталогов, я получаю все эти вложенные блоки try / кроме.

try:
  os.stat("dist")
  print "mv " + distname + " dist"
  try:
    os.remove("dist/"+distname)
  except:
    pass
  shutil.move([distname, "dist"])
except:
  # Code if dist didn't exist before we got here

Есть ли лучший способ написать это - например, с помощью операторов if вместо блоков исключений - или именно так работает Python? Я действительно ненавижу, что у меня логика реализована в виде блоков исключений.

Ответы [ 2 ]

2 голосов
/ 09 марта 2011

Другой подход - проверить, существует ли файл, прежде чем пытаться выполнить над ним какие-либо операции, что может помочь устранить некоторые из ваших блоков try / кроме.Для этого вы можете использовать os.path.exists () .В os.path есть и другие функции, которые также могут оказаться полезными.

При этом Python разработан для работы с исключениями по принципу EAFP (Проще просить прощения, чем разрешения), поэтому, безусловно, будут ситуации, когда вам нужно будет ловить исключения.

В другой заметке я бы также рекомендовал не использовать блоки try / кроме тех, у которых нет квалификаторов, так как они будут перехватывать любые исключения, а не только ошибки, связанные с доступом к файлу.

0 голосов
/ 09 марта 2011

Посмотрите на использование Python с оператором .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...