2013-06-15 1 views
2

Когда вы делаете:Открыты (файлы, "wt" или "rt") разные объекты?

file = open("my file","wt") 

и

file = open("my file" , "rt") 

Эти и создавать файловые объекты, которые мы используем методы файла на. Но создают ли они разные объекты? И если они создают разные файловые объекты, было бы справедливо сказать, что «wt» один изменен, а «rt» один неизменен?

+1

По-разному, вы имеете в виду разные типы? Потому что они оба будут разными * экземплярами *, по крайней мере. –

+1

* «Но создают ли разные объекты файлов?» * Попробуйте 'open (« my file »,« wt ») == open (« my file »,« rt »)'. Каков результат? –

ответ

2

Нет, это было бы несправедливо сказать. Вы создаете экземпляры того же стандарта file, который проксирует обращения к файлам в операционную систему. Режим определяет, что операционная система позволит вам сделать.

Не имеет значения, используете ли вы одно и то же имя файла или разные имена файлов; ОС не заботится, и ни Python; объекты открытых файлов различны.

Сам объект Python является неизменным; вы не можете изменить режим, имя файла или другие атрибуты после факта.

Обратите внимание, что добавив в режим +, вы можете читать и написать файловому объекту; w+ будет обрезать файл первым, а r+ - нет.

0

На уровне ОС они будут созданы как два разных дескриптора файла. Они (вероятно) указывают на одни и те же данные в VFS/кеш, но могут работать независимо.