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