Для чего полезен NamedTeoraryFile в Windows? - PullRequest
2 голосов
/ 21 июня 2011

Модуль Python tempfile содержит NamedTemporaryFile и TemporaryFile.Документация для первого из них гласит:

Возможность использования имени для открытия файла во второй раз, когда именованный временный файл все еще открыт, зависит от платформы (его можно использовать в Unix;это невозможно в Windows NT или более поздней версии)

Какой смысл в имени файла, если я не могу использовать это имя?Если мне нужно полезное (для меня) поведение Unix в Windows, я должен сделать копию кода и вырвать все биты, которые говорят if _os.name == 'nt' и т. П.

Что дает?Конечно, это полезно для чего-то, поскольку это было намеренно закодировано таким образом, но что это такое?

Ответы [ 3 ]

8 голосов
/ 21 июня 2011

Указывает, что доступ к нему второй раз, пока он все еще открыт .В противном случае вы можете использовать имя, просто передайте delete=False при создании NamedTemporaryFile, чтобы оно сохранялось после его закрытия.

1 голос
/ 21 июня 2011

Вы не хотите "выдирать все биты ...". Это закодировано так по причине. Он говорит, что вы не можете открыть его ВТОРОЙ раз, пока он еще открыт. Не. Просто используйте его один раз и выбросьте (в конце концов, это временный файл). Если вы хотите постоянный файл, создайте свой собственный.

«Конечно, это полезно для чего-то, поскольку это было намеренно закодировано таким образом, но что это такое». Ну, я использовал его для записи электронных писем (в двоичном формате), прежде чем копировать их в место, где наш сервер Exchange собирает и отправляет их. Я уверен, что есть много других вариантов использования.

0 голосов
/ 21 июня 2011

Я почти уверен, что создатели библиотеки Python не просто решили заставить NamedTemporaryFile вести себя по-другому в Windows для смеха. Все эти _os.name == 'nt' тесты будут там из-за различий между платформами Windows и Unix. Таким образом, из этой документации я делаю вывод, что в Windows файл открывался так, как NamedTemporaryFile открывает его невозможно открыть снова, в то время как у NamedTemporaryFile он все еще открыт, и это происходит из-за способа Windows работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...