Подтвердить что ты не робот

Как использовать Python tempfile.NamedTemporaryFile()?

Я работаю над Python script, которому нужно создать около 50 отдельных временных файлов, которые все добавляются часто в течение script и объединены в конце. Я уверен, что модуль tempfile может делать то, что мне нужно, но мне не удалось выяснить, как читать документацию.

Я хочу использовать временные файлы - в отличие от переменных - для сохранения системной памяти, поскольку эти куски данных растут, поскольку script обрабатывает десятки тысяч других файлов.

Следующий фрагмент кода - это хак, который я использую для создания этих файлов (не временно) в каталоге:

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(). Согласно документации:

Это имя может быть извлечено из имени элемента файлового объекта.

К сожалению, я не понимаю, что это значит. Мне просто нужно снова позвонить по каждому файлу позже, когда я снова перейду через свой "элемент" в файлы, которые я обрабатываю. Я предполагаю, что это довольно прямолинейно, и я просто плотный. В случае, если это имеет значение, у меня есть версии этого script для Python 2.7.1 и 3.2.3. Мне действительно нужно, чтобы тот или иной работал; Я создал как учебное упражнение.

4b9b3361

Ответ 1

"Это имя может быть извлечено из имени элемента файлового объекта."

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

In [4]: import tempfile

In [5]: tf = tempfile.NamedTemporaryFile()  
In [6]: tf.name  # retrieve the name of the temp file just created
Out[6]: 'c:\\blabla\\locals~1\\temp\\tmptecp3i'

Примечание. По умолчанию файл будет удален, когда он будет закрыт. Однако, если параметр delete равен False, файл не будет автоматически удален. Для получения дополнительной информации см. Документы Python.

Так как вы можете получить имя каждого из 50 файлов temp, которые вы хотите создать, вы можете сохранить их, например, в списке, прежде чем использовать их позже (как вы говорите). Просто не забудьте установить значение delete таким образом, чтобы файлы не исчезали при их закрытии (в случае, если вы планируете закрыть, а затем снова открываете их).

Я объяснил, как создавать временные имена файлов более подробно здесь Лучший способ генерации случайных имен файлов в Python