2013-06-21 34 views
1

Я хочу, чтобы все ресурсы были очищены правильно. Является ли это безопасно, что нужно сделать:python - создание пустого файла и закрытие в одной строке

try: 
    closing(open(okFilePath, "w")) 
except Exception, exception: 
    logger.error(exception) 
    raise 

EDIT:

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

+0

Вы можете попробовать использовать «с» contex в python с файлоподобными объектами. – Denis

+3

1 liner может быть 'open (okFilePath, 'w +'). Close()'? – karthikr

+0

@karthikr За исключением случаев, когда 'open' вызывает исключение, он не будет закрыт. 'с open (путь, 'w +'): pass' может технически быть выраженным на одной строке, хотя и будет обрабатывать исключения. –

ответ

5

Убедитесь, что файл закрыт в любом случае, вы можете использовать оператор with. Например:

try: 
    with open(path_to_file, "w+") as f: 
     # Do whatever with f 
except: 
    # log exception 
+1

Что делать, если я не хочу ничего делать с файлом. Я просто хочу его создать? – Cheetah

+2

@Ben: Затем выйдите из '' '' '' '' '' ''. – martineau

+4

@Ben: ... и смените строку '# Do what with f' на просто' pass' _or_ поместите все в одну строку 'с open (путь_to_file, w +): pass'. – martineau