Я работаю над скриптом Python, которому необходимо создать около 50 отдельных временных файлов, которые все приложены часто во время сценария и объединены в конце. Я уверен, что модуль tempfile
может делать то, что мне нужно, но мне не удалось выяснить, как читать документацию.Как использовать временный файл Python.NamedTemporaryFile()?
Я хочу использовать временные файлы - в отличие от переменных - для сохранения системной памяти, поскольку эти куски данных становятся большими, поскольку скрипт обрабатывает десятки тысяч других файлов.
Следующий фрагмент кода является хак настоящее время я использую для создания этих файлов (untemporarily) в качестве untemporary каталоге:
item = (string from another file) # string must id file for future use
tmpfile = 'tmpfiles/' + item
if item not in totalitems:
totalitems.add(item)
with open(tmpfile, 'w') as itemfile:
output = some stuff
tmpfile.write(output)
else:
with open(tmpfile, 'a') as itemfile:
output = different stuff
tmpfile.write(output)
Я думаю, что мне нужно tempfile.NamedTemporaryFile()
. Согласно documentation:
Это имя может быть получено от имени члена файлового объекта.
К сожалению, я не понимаю, что это значит. Мне просто нужно снова вызвать каждый файл позже, когда я снова перейду через свой «элемент» в файлы, которые я обрабатываю. Я предполагаю, что это довольно прямолинейно, и я просто плотный. В случае, если это имеет значение, у меня есть версии этого скрипта для Python 2.7.1 и 3.2.3. Мне действительно нужно, чтобы тот или иной работал; Я создал как учебное упражнение.
возможно дубликат [Лучший способ для генерации случайных имен файлов в Python] (http://stackoverflow.com/questions/10501247/best-way- to-generate-random-file-names-in-python) – Joe
@Joe, часть этого вопроса представляется дубликатом связанного потока. Частично это не так; см. комментарий в ответ Левона ниже. – Gregory
Зачем нужны эти файлы? Если они неназванные (предварительно удаленные), в плане очистки происходит меньше ошибок. Вы можете просто сохранить объект tmpfile, а не его имя, а затем вызвать 'seek (0)', чтобы перейти к началу, чтобы быть готовым к чтению ... или mmap его содержимое, или иным образом получить доступ к нему, как вам нравится. –