Возможно ли получить путь к временному файлу в 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()