2016-06-23 9 views
1

Можно ли использовать оператор Python "with" с функцией ogr.open (файл)?Использовать Python с инструкцией для ogr.open (файл)

Например, я хотел бы сделать что-то вроде:

with ogr.open(file) as ds: 

На данный момент я могу только получить следующие работы:

try: 
    ds = ogr.open(file) 
    ... 

except: 
    del ds 
+0

Что вы ожидаете от 'with'? Вызов 'ds.close()' в конце? – SuperSaiyan

+0

Объект ds (DataSource) не имеет атрибута close(). Без использования комбинации try-finally (или try-except) я обнаружил, что мой интерпретатор сохраняет блокировку открытого ds (DataSource), даже если у меня есть «del ds» в скрипте. –

ответ

2

Согласно документации, представляется, что вы не можете использовать with ogr.Open(file) ...

Объект Python, который используется в операторе with, должен иметь методы __enter__ и __exit__, чтобы настроить и снять контекст, используемый внутри блока with. Here's an explanation.

Согласно Documentation for OGR Open, эти __enter__ и __exit__ методы не определены для объекта DataSource возвращенного Open так что вы не можете использовать результат от ogr.Open как предмета with заявления.

Так это выглядит, как вы будете использовать свой try/except комбинацию (хотя комбинация try/finally может быть лучше).

+0

Спасибо, ваше объяснение помогает мне понять, почему я не могу его использовать. Это помогло бы предотвратить сохранение программных файлов в файлах после выполнения сценария. –

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

  • Нет связанных вопросов^_^