Kovit
Март 15, 2011 16:59:42
Привет ребяты.
Начал изучать python. Пишу под линукс скриптик и столкнулся с проблемкой. Что читает из файла не то.
К примеру записал туда он число 100. Я потом вручную исправляю его на 90. Запускаю скрипт, а он при считывании в переменную записывает 100 вместо 90.
stroka='0';
first=False;
if os.path.isfile(temppath+'/dev'+options.host) == True :
f=open(temppath+'/'+options.host,'r');
stroka=f.readline();
f.close;
else: first=True;
Вставляю после строчки stroka=f.readline(); ->print stroka; Выдет старое значение (100). Почему?
Вот так делаю запись в файл.
f=open(temppath+'/dev'+options.host,'w');
f.write(strin);
f.close;
Jenyay
Март 15, 2011 17:35:20
А ты точно тот файл исправляешь? А то я смотрю при чтении открывается файл temppath+'/'+options.host, а при записи temppath+'/dev'+options.host.
И еще в качестве оффтопика: точки с запятой в питоне не ставят.
Kovit
Март 15, 2011 17:38:26
Бинго. невнимательность погубила.
Думал может что с if намудрил или чего еще, а то после pascal подругому немножко.
Спасибо за помощь.
sp3
Март 15, 2011 19:04:34
Да и метод f.close не вызывается.
Jenyay
Март 16, 2011 07:30:05
Кстати, да, скобок не хватает. А еще это можно переписать как
with open (os.path.join (temppath, "dev", options.host)) as fp:
stroka=f.readline()
Тогда можно не заботиться о закрытии файла.