Возможно ли получить путь к временному файлу в Python 3?

Мне было интересно, возможно ли получить путь к файлу временного файла, созданного с использованием библиотеки tempfile. По сути, я пытаюсь создать функцию, которая принимает некоторые данные и генерирует временный CSV-файл на основе этих данных. Мне было интересно, есть ли способ получить путь к этому временному файлу?

4 ответа

Решение

Использование tempfile.NamedTemporaryFile создать временный файл с именем, а затем использовать .name атрибут объекта.

Обратите внимание, что существуют ограничения для конкретной платформы в отношении того, как можно использовать это имя. В документации сказано:

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

Это отлично работает, чтобы получить полный путь с именем файла

      file = tempfile.NamedTemporaryFile()
filename = file.name

Выход:

/tmp/tmp_sl4v9ps

У tempfile.NamedTevenFile есть свойство.dir, которое даст вам то, что вы хотите.


РЕДАКТИРОВАТЬ: Нет, это не .name@Barmar, но просматривая исходный код для tempfile, я не вижу .dir собственность тоже. Тем не менее, вы можете использовать .name собственность в сочетании с os.path"s dirname метод следующим образом:

with tempfile.NamedTemporaryFile(suffix='.csv', prefix=os.path.basename(__file__)) as tf:
    tf_directory = os.path.dirname(tf.name)

В любом случае, если вам нужен путь к каталогу временного файла, вы можете использоватьtempfile.gettempdir()

Другие вопросы по тегам