Найти - Пользователи
Полная версия: file.name в разных версиях питона?
Начало » Python для новичков » file.name в разных версиях питона?
1 2 3 4
pioner
Ed
На линухе при использовании TemporaryFile файл удаляется после создания, так что можно считать,
что имени у него нет, то есть узнавать нечего.

PS: Между прочим я это уже третий раз пишу, а вы хамите в ответ на совет читать внимательнее.
Дружище, вы сильно впечатлительны, если за хамство принимаете критику.
Временные файлы удаляются по закрытии скрипта, иначе в них смысла нет.
regall
pioner
Временные файлы удаляются по закрытии скрипта, иначе в них смысла нет.
Нет, это неправльно, такие файлы удаляются только тогда, когда они явно закрыты, или переменная-дескриптор будет собрана Garbage Colector'ом. Более детально читаем тут:
http://docs.python.org/library/tempfile.html#tempfile.TemporaryFile

P.S. Да разрешит ваш спор могучий документаций
pioner
regall
pioner
Временные файлы удаляются по закрытии скрипта, иначе в них смысла нет.
Нет, это неправльно, такие файлы удаляются только тогда, когда они явно закрыты, или переменная-дескриптор будет собрана Garbage Colector'ом. Более детально читаем тут:
http://docs.python.org/library/tempfile.html#tempfile.TemporaryFile

P.S. Да разрешит ваш спор могучий документаций
На прикладном уровне достаточно такого понимания, что я изложил.
Спора нет, а есть уход в другую тему, чего не хотелось бы.

И так. В виндах file.name есть.
есть сообщение, что в линуксах его может не быть.
пока сам не пробовал - попробую сюда сообщю ОБЯЗЯТЕЛЬНО!
а пока собираются мнения и опыт форумчан.

Надо для загрузки файла на сервер через веб-форму не читая содержимого, а делать копию в другом месте для версии питона не выше 2.3.
Ed
pioner
Дружище, вы сильно впечатлительны, если за хамство принимаете критику.
Необоснованную критику, заметьте. В свою очередь не могу не заметить, что вы сильно невнимательны, если после трех упоминаний о том, 
что у файла нет имени пытаетесь это имя получить.

Временные файлы удаляются по закрытии скрипта, иначе в них смысла нет.
Попытаюсь объяснить поподробнее, раз простое повторение не работает.
Итак, смотрим на код TemporaryFile и видим сначала этот комментарий:
Returns an object with a file-like interface. The file has no name, and will cease to exist when it is closed.
А потом этот код:
_os.unlink(name)
return _os.fdopen(fd, mode, bufsize)
Именно в этом месте имя файла перестает существовать, точнее после _os.unlink(name)

Отвечу также на непрозвучавший вопрос 'А что же сделать, чтобы имя было?'. Ответ на него уже прозвучал, как ни странно - юзать NamedTemporaryFile.
Если вам интересно как это сделать - покажите ваш код, я расскажу, если смогу.
pioner
Ed
Отвечу также на непрозвучавший вопрос 'А что же сделать, чтобы имя было?'. Ответ на него уже прозвучал, как ни странно - юзать NamedTemporaryFile.
Если вам интересно как это сделать - покажите ваш код, я расскажу, если смогу.
Посмотрел код. Буду рассуждать так -
Удаление имени временного файла, в зависимости от платформы, видимо, связано с тем, что-бы чистильщик временной папки, если такой есть, не удалил сам файл. И автор метода оставляет только дискриптор файла, не подумав при этом, что я могу сделать хранилищем свою директорию по выбору и сам заботиться о ее непереполнении.

Мой код вам не нужен, и вы знаете об этом.

“Обмануть” модуль CGI, который использует TemporaryFile можно попробовать.
Временно прописать os.name…или в os.modules записать ссылку на свой метод…и то и другое надо пробовать…
Можно модифицировать пару строк (ОДНУ СТРОКУ!) у CGI и поместить в свою библиотеку, а именно, в самом модуле заменить TemporaryFile на NamedTemporaryFile…и все! При этом в os.environ и т.п. записать свои значения.

Хорошо! что есть исходники!
Плохо, что до сих пор не сделали модуль с возможностью задать свою TMP папку.
Ed
pioner
Посмотрел код. Буду рассуждать так -
Удаление имени временного файла, в зависимости от платформы, видимо, связано с тем, что-бы чистильщик временной папки, если такой есть, не удалил сам файл.
Нет такого.

И автор метода оставляет только дискриптор файла, не подумав при этом, что я могу сделать хранилищем свою директорию по выбору и сам заботиться о ее непереполнении.
Если вы имеете в виду автора tempfile, то он предоставил возможность создать временный файл с именем.

Мой код вам не нужен, и вы знаете об этом.
Не нужен был бы - не говорил. Мне собственно все равно что это будет - ваш настоящий код или кусочек, объясняющий чего вы пытаетесь сделать. Потому что из вышеизложенного у меня пока вывод один - вы хотите странного.
regall
Ed
Не нужен был бы - не говорил. Мне собственно все равно что это будет - ваш настоящий код или кусочек, объясняющий чего вы пытаетесь сделать. Потому что из вышеизложенного у меня пока вывод один - вы хотите странного.
не наседайте на человека так, учтите, что он пришел из PHP…

P.S. А код-таки увидеть хотелось бы .
pioner
pioner
…чистильщик временной папки, если такой есть, не удалил сам файл.
Ed
Нет такого.
тогда это надо для ДЕЙСТВИТЕЛЬНО уникального имени файла созданного по дискриптору?

Ed
Если вы имеете в виду автора tempfile, то он предоставил возможность создать временный файл с именем.
Речь идет о модуле CGI, который использует модуль tempfile.

pioner
Мой код вам не нужен…
Ed
Не нужен был бы - не говорил. …
… у меня пока вывод один - вы хотите странного.
код: fileobject.name - и все! который раз уже написан!
Я хочу:
pioner
Надо для загрузки файла на сервер через веб-форму не читая содержимого, а делать копию в другом месте для версии питона не выше 2.3..
т.е. копировать файл с помошью copy().
И чего тут странного?
Ed
regall
не наседайте на человека так, учтите, что он пришел из PHP…
Я пытаюсь помочь. Предложил помощь, сказал чего мне надо. А мне в ответ объясняют что это мне не надо. Реагирую как могу.

P.S. А код-таки увидеть хотелось бы .
Именно.
Ed
pioner
Надо для загрузки файла на сервер через веб-форму не читая содержимого, а делать копию в другом месте для версии питона не выше 2.3..
т.е. копировать файл с помошью copy().
Это я читал. Мне непонятно. Хотите чтобы я вам помог - покажите код, чтобы воспроизвести ситуацию. Это форум программистов, здесь так принято.

Я могу назадавать вопросов по тому, что вы написали, но это будет дольше и может окончится ничем. Поэтому не буду.
Самый простой вариант - код, описывающий проблему. Вам самому будет полезно увидеть проблему, кстати.
Не бойтесь, это не больно :)
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