Найти - Пользователи
Полная версия: Как проверить дескриптор файла на корректность?
Начало » Python для новичков » Как проверить дескриптор файла на корректность?
1 2 3
zheromo
try:
with open('filename', 'r') as f:
for line in f:
print line,
except IOError:
print 'io error!'
o7412369815963
num8er
для ошибок есть “except:”
а “finally:” при успешном выполнении блока в try

вот книгу читай: http://www.python.ru/files/book-ods.pdf (особенно о блоке try - except - finally)
книги надо почитать тебе, см пример:
try:
print 'try 0/1',
a = 0/1
print 'ok'
finally:
print 'finally 0/1'

try:
print 'try 1/0'
a = 1/0
print 'ok'
finally:
print 'finally 1/0'
результат:
try 0/1 ok
finally 0/1
try 1/0
finally 1/0
Traceback (most recent call last): ....
finally выполнился 2 раза и при ошибке и без
num8er
o7412369815963
num8er
для ошибок есть “except:”
а “finally:” при успешном выполнении блока в try

вот книгу читай: http://www.python.ru/files/book-ods.pdf (особенно о блоке try - except - finally)
книги надо почитать тебе, см пример:
try:
print 'try 0/1',
a = 0/1
print 'ok'
finally:
print 'finally 0/1'

try:
print 'try 1/0'
a = 1/0
print 'ok'
finally:
print 'finally 1/0'
результат:
try 0/1 ok
finally 0/1
try 1/0
finally 1/0
Traceback (most recent call last): ....
finally выполнился 2 раза и при ошибке и без
прошу прошения ))) видимо я не так понял трактовку finally
если уж так то получается что finally бесполезная вещь
o7412369815963
num8er
если уж так то получается что finally бесполезная вещь
его можно использовать например для закрытия файлов, или сетевых соединений, освобождения ресурсов - это все равно надо делать даже если где-то внутри возникла ошибка.
indus
всем спасибо за участие.
мне известно как работать с try/except/finally
я все же надеялся что функция open(…) позволяет проверять результат по-человечески. без изысканных извращений.
чем больше узнаю Питон, тем более укрепляюсь в мысли, что питонщики таки любители подобных извращение ;) не обижайтесь только. экспешены нужны и полезны, но не всегда и не везде =)
Soteric
Как должен открываться файл, чтобы без извращений?
ziro
indus
я все же надеялся что функция open(…) позволяет проверять результат по-человечески. без изысканных извращений.
Честно говоря, не вижу извращений. Почему файл не был открыт можно узнать очень просто

    try:
f = open(...)
except OSError, e:
if e.errno == errno.ENOENT: print "No such file or directory"
Ну и вообще можно модуль errno посмотреть на предмет всяких кодов ошибок.
indus
Soteric
ziro

на системном уровне посредством возращаемой ошибки/некорректного дескриптора. использование исключений для таких целей есть муветон в общем, т.к. это весьма дорогая штука для любой ОС. в любом случае, читая книжки я уже понял, что Питону в общем-то положить на такие “мелочи” =)

ПС. в тоже время не исключаю, что питоновские исключения не являются исключениями в классическом представлении, а есть некий высокоуровневый эрзац-реализация идеи ;)
Андрей Светлов
Ээээ. Исключения питона не имеют никакого отношения к исключениям OS (прерываниям, по сути, переключающим контекст процесса в kernel и обратно, с размоткой С стека и прочими неприятностями).
indus
Андрей Светлов
вы смешиваете исключения и прерывания.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB