Найти - Пользователи
Полная версия: Счет строк из файла
Начало » Python для новичков » Счет строк из файла
1 2 3 4 5 6
4kpt
А я и не надеюсь ни на какие сборщики. Я всегда стараюсь закрывать открытый файл явно или через инструкцию try-except.
cutwater
s0rg
Или циклические ссылки и gc у питона это два разных механизма?

GC отлавливает циклические ссылки. В простых случаях работает подсчет ссылок.
То есть подсчет ссылок и GC это два разных механизма.
Немного отличается от Вашего утверждения.
s0rg
cutwater
GC отлавливает циклические ссылки. В простых случаях работает подсчет ссылок.
Спасибо.
4kpt
cutwater,
Если можно поясни.
Какой механизм обнаружения циклических ссылок, если не секрет???
Т.е. в какой момент питон понимает, что ссылка зациклилась. Может ссылка на объект не уменьшается???
4kpt
Спасибо, почитаю.

До этих теледебатов думал, что сборщик - это и есть обработчик “ссылок на объект”. Если с объектом все в порядке и ссылки не циклятся - он работает в одном режиме, если нет - начинает работать в другом…. Спасибо за более детальные пояснения.
reclosedev
Хочется еще добавить про with.
4kpt
P.S. Насчет with - я ей не пользуюсь. Я всегда слежу за открытием и закрытием файла. При наступлении любой ошибки осуществляю попытку закрыть файл инструкцией try: file.close(), except: pass.
Поясню почему: Считывание информации функцией with может привести к ошибкам в коде. Нет явного открытия и закрытия файла. Если файл открыт и изменяется, то with может считывать из него информацию: я против этого, так как ценность такой информации сомнительна…
По моему вы что-то путаете, with ничего не читает, он просто вызывает методы __enter__ и __exit__ (при выходе из блока) файлового объекта, которые открывают и закрывают файл, и возвращает ссылку на файловый объект.
with open('file.txt') as f:
    data = f.read()
print data # do something
это тоже самое, что
f = pen('file.txt')
try:
    data = f.read()
finally:
    f.close()
print data # do something
http://www.python.org/dev/peps/pep-0343/
http://effbot.org/zone/python-with-statement.htm

Вообще, оператор with позволяет сделать многие вещи удобными, например использование lock'ов, измерение затраченного времени, коммит транзакций, и т.п. А с помощью contextlib можно создавать свои менеджеры контекста лаконично.
sp3
вот она, магия:
>>> open('c:/111.txt')
<open file 'c:/111.txt', mode 'r' at 0x012C5230>
>>> print  _
<open file 'c:/111.txt', mode 'r' at 0x012C5230>
adray
sp3
вот она, магия:
Я только вчера про IPython узнал, так вот там открытые файловые объекты хз где хранятся, т.к. переопределение “_” не приводит к удалению объекта, более того, при вызове
open('filename')
в списке lsof появляется два элемента, а при многократном вызове - соответственно дохрена

Наверное, это фича
ZZZ

Это не магия, а фитча питонячей консоли.

IPython, это глючное поделие, которое постоянно делает что-то не то. Особенно доставляет не санкционированный с пользователем вызов дескрипторов... Используйте лучше bpython, так как он няшен.

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