Форум сайта python.su
0
f = open(…)
проверить что файл действительно создан/открыт и описатель валиден
Офлайн
2
ну… если что-то пойдет не так то после open сразу возникнет исключение
Офлайн
0
zheromo
как один из вариантов имеет право быть =)
а как-нибудь более естественно это можно сделать?
Офлайн
0
покажу пример
try:
f=open('filename', 'r'); // пытаемся открыть файл
finally:
// если файл удачно открылся то:
while 1:
line=f.readline(); // считываем строку
if not line: // если нечего считывать
break; // то облом
print line; // принтуем строку
f.close(); // закрыли дескриптор
Офлайн
32
num8erне верно, finally вызывается при ошибке
покажу примерtry:
f=open('filename', 'r'); // пытаемся открыть файл
finally:
// если файл удачно открылся то:
while 1:
line=f.readline(); // считываем строку
if not line: // если нечего считывать
break; // то облом
print line; // принтуем строку
f.close(); // закрыли дескриптор
Офлайн
0
o7412369815963для ошибок есть “except:”num8erне верно, finally вызывается при ошибке
покажу примерtry:
f=open('filename', 'r'); // пытаемся открыть файл
finally:
// если файл удачно открылся то:
while 1:
line=f.readline(); // считываем строку
if not line: // если нечего считывать
break; // то облом
print line; // принтуем строку
f.close(); // закрыли дескриптор
нужно все запихать в блок try
Отредактировано (Фев. 17, 2011 12:28:20)
Офлайн
20
finally будет выполнен в любом случае. В этом его смысл - гарантированно выполнить код, независимо от того были ошибки или не было.
Офлайн
20
Вы все тут не правы, finally гарантированно выполняется в любом случае, была ошибка или нет. Если ошибка (повторно) возникает в except, то finally всё равно сработает, такой вот он.
> а как-нибудь более естественно это можно сделать?
Вам надо с си поработать, естественнее не бывает, там вы защищены от такого глупого изобретения как исключения. Будите естественно результат работы каждой функции проверять естественно.
p.s. Было написано до поста Soteric'а.
..bw
Отредактировано (Фев. 17, 2011 12:19:41)
Офлайн
0
bwвас не знаю. но я люблю конкретику.
Вы все тут не правы, finally гарантированно выполняется в любом случае, была ошибка или нет. Если ошибка (повторно) возникает в except, то finally всё равно сработает, такой вот он.
> а как-нибудь более естественно это можно сделать?
Вам надо с си поработать, естественнее не бывает, там вы защищены от такого глупого изобретения как исключения. Будите естественно результат работы каждой функции проверять естественно.
p.s. Было написано до поста Soteric'а.
..bw
finally гарантированно выполняется в любом случае, была ошибка или нетмне удобно быть уверенным что я конкретно “сказал” питону что “если выполнил трай то делай файнели”
Отредактировано (Фев. 17, 2011 12:37:00)
Офлайн
20
Ваш код просто неправильный, о чем сказал o7412369815963. Если при открытии файла возникнет исключение, то
while 1:
line=f.readline(); // считываем строку
if not line: // если нечего считывать
break; // то облом
print line; // принтуем строку
f.close();
Офлайн