Форум сайта python.su
> Проблема в том, что я не могу как в С++ построчно считывать файл и следовательно не могу вставить в нужное место строку.
Дык. Я не понял почему вы не можете построчно читать файл?
Офлайн
Rodegast
я не могу как в С++ построчно считывать файл
for i in open("a.lst","r").readlines():
print i
Отредактировано (Июнь 23, 2011 11:51:15)
Офлайн
Ну я о том же. С построчным чтением файла нет никаких проблем. Причём большие файлы можно читать через readline(), а маленькие через readlines(). В последнем случае вставка строки в произвольное место становится ну очень простой задачей.
Офлайн
>>> with open("/etc/passwd", "r") as f:
... for i in (1, 2):
... print i, next(f).rstrip('\n')
...
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
>>>
doza_andфайл остался открытымfor i in open("a.lst","r").readlines():
print i
Офлайн
py.user.nextА разве его не закроет сборщик мусора после того как создастся список ?
файл остался открытым
Офлайн
А на каком основании закрывать именно после создания списка?
Кстати, в 3.2 незакрытый файл — это ResourceWarning
Офлайн
>>Кстати, в 3.2 незакрытый файл — это ResourceWarning
Thank you!!!
Офлайн
Я сделал вот как: я открываю свой файл и создаю новый. Читаю строку и сразу же записываю в буферный файл. Когда я нахожу нужную строку я записываю новую строку, а потом до записываю файл. Потом удаляю исходный файл, а буферный файл переименовываю :)
Офлайн
RodegastВообще, open возвращает итерабельный объект:
Ну я о том же. С построчным чтением файла нет никаких проблем. Причём большие файлы можно читать через readline(), а маленькие через readlines(). В последнем случае вставка строки в произвольное место становится ну очень простой задачей.
for i in open("hello.txt"):
...
Офлайн
Carzilнужно закрыть файл потом
Вообще, open возвращает итерабельный объект:for i in open("hello.txt"):
Офлайн