Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 26, 2009 14:57:28

pioner
От:
Зарегистрирован: 2009-10-21
Сообщения: 146
Репутация: +  0  -
Профиль   Отправить e-mail  

file.name в разных версиях питона?

regall
А чем тот же ‘name’ не устраивает?
>>> tf = tempfile.TemporaryFile()
>>> tf.name
'c:\\docume~1\\dzinko\\locals~1\\temp\\tmp34fqmf'
>>>
это какая версия питона?
интересуют 2.3 или 2.4



Офлайн

#2 Окт. 26, 2009 16:07:56

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

file.name в разных версиях питона?

pioner
Сказано же - для любой работает.

Офлайн

#3 Окт. 26, 2009 16:19:18

pioner
От:
Зарегистрирован: 2009-10-21
Сообщения: 146
Репутация: +  0  -
Профиль   Отправить e-mail  

file.name в разных версиях питона?

Ferroman
pioner
Сказано же - для любой работает.
Народ! каюсь! проверил еще раз. Для 2.3 есть name.



Офлайн

#4 Окт. 26, 2009 19:45:34

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

file.name в разных версиях питона?

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>'



Офлайн

#5 Окт. 26, 2009 19:54:35

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

file.name в разных версиях питона?

Ed
Под виндой всегда возвращает путь к файлу, под линуксом такой путь возвращает только если делать NamedTemporaryFile (он тогда видим на файловой системе).

>>> ft = tempfile.NamedTemporaryFile()
>>> ft.name
'/tmp/tmpEmsVc_'
>>>

Отредактировано (Окт. 26, 2009 19:57:08)

Офлайн

#6 Окт. 26, 2009 20:15:47

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

file.name в разных версиях питона?

Ага, вижу. На POSIX платформах он удаляется после создания.

Кстати, пользовать NamedTemporaryFile и будет правильным ответом на вопрос топикстартера.
Судя по тому, что он упоминал fdopen он видел тоже, что и я.



Отредактировано (Окт. 26, 2009 20:19:20)

Офлайн

#7 Окт. 27, 2009 08:30:22

pioner
От:
Зарегистрирован: 2009-10-21
Сообщения: 146
Репутация: +  0  -
Профиль   Отправить e-mail  

file.name в разных версиях питона?

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



Офлайн

#8 Окт. 27, 2009 14:46:20

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

file.name в разных версиях питона?

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



Офлайн

#9 Окт. 27, 2009 18:37:12

pioner
От:
Зарегистрирован: 2009-10-21
Сообщения: 146
Репутация: +  0  -
Профиль   Отправить e-mail  

file.name в разных версиях питона?

Ed, вы писали “…он видел тоже, что и я.”, я написал что видел на винде, и name не причем. Т.е. видно что файл открыт не open(), а fdopen(). Чего вы тут … читайте сами внимательно.

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



Офлайн

#10 Окт. 27, 2009 20:13:17

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

file.name в разных версиях питона?

На линухе при использовании TemporaryFile файл удаляется после создания, так что можно считать,
что имени у него нет, то есть узнавать нечего.

PS: Между прочим я это уже третий раз пишу, а вы хамите в ответ на совет читать внимательнее.



Отредактировано (Окт. 27, 2009 20:38:32)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version