Найти - Пользователи
Полная версия: file.name в разных версиях питона?
Начало » Python для новичков » file.name в разных версиях питона?
1 2 3 4
pioner
regall
А чем тот же ‘name’ не устраивает?
>>> tf = tempfile.TemporaryFile()
>>> tf.name
'c:\\docume~1\\dzinko\\locals~1\\temp\\tmp34fqmf'
>>>
это какая версия питона?
интересуют 2.3 или 2.4
Ferroman
pioner
Сказано же - для любой работает.
pioner
Ferroman
pioner
Сказано же - для любой работает.
Народ! каюсь! проверил еще раз. Для 2.3 есть name.
Ed
Ferroman
Сказано же - для любой работает.
Хм…
$ python
Python 2.4.3 (#1, Dec 11 2006, 11:38:52)
on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import tempfile
>>> tf = tempfile.TemporaryFile()
>>> tf.name
'<fdopen>'
Ferroman
Ed
Под виндой всегда возвращает путь к файлу, под линуксом такой путь возвращает только если делать NamedTemporaryFile (он тогда видим на файловой системе).
>>> ft = tempfile.NamedTemporaryFile()
>>> ft.name
'/tmp/tmpEmsVc_'
>>>
Ed
Ага, вижу. На POSIX платформах он удаляется после создания.

Кстати, пользовать NamedTemporaryFile и будет правильным ответом на вопрос топикстартера.
Судя по тому, что он упоминал fdopen он видел тоже, что и я.
pioner
Ed
Кстати, пользовать NamedTemporaryFile и будет правильным ответом на вопрос топикстартера.
Судя по тому, что он упоминал fdopen он видел тоже, что и я.
я видел
fileobject.file=<open file ‘<fdopen>’, mode ‘w+b’ at 0x0125DCA0>
т.е. то как создан объект. Для встроенной open() проблем не было.
“пользовать NamedTemporaryFile и будет правильным ответом” - да, но я видел в CGI модуле для загружаемых файлов использована TemporaryFile, если не ошибся, конечно.
Модули в исходниках одинаковы для всех платформ (должно быть так)….
Посмотрим, что под линуксом будет на хостинге …
Ed
pioner
Ed
Кстати, пользовать NamedTemporaryFile и будет правильным ответом на вопрос топикстартера.
Судя по тому, что он упоминал fdopen он видел тоже, что и я.
я видел
fileobject.file=<open file ‘<fdopen>’, mode ‘w+b’ at 0x0125DCA0>
т.е. то как создан объект. Для встроенной open() проблем не было.
Причем тут .file? Мы вроде о .name говорим. Так вот, на линухе файлы, создаваемые TemporaryFile
выдадут вам '<fdopen>' в качестве .name, поскольку имени у них нет. Посмотрите мой пост внимательнее.
pioner
Ed, вы писали “…он видел тоже, что и я.”, я написал что видел на винде, и name не причем. Т.е. видно что файл открыт не open(), а fdopen(). Чего вы тут … читайте сами внимательно.

Ed, вопрос вам - как тогда поднять на линухе имя временного файла куда плюхнулся закачиваемый файл из формы (версии питона ниже 2.6)?
Модуль CGI использует TemporaryFile.
Ed
На линухе при использовании TemporaryFile файл удаляется после создания, так что можно считать,
что имени у него нет, то есть узнавать нечего.

PS: Между прочим я это уже третий раз пишу, а вы хамите в ответ на совет читать внимательнее.
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