web-dev-qa-db-fra.com

Est-il possible d'obtenir le chemin d'un fichier temporaire dans Python 3

Je me demandais s'il était possible d'obtenir le chemin d'accès d'un fichier temporaire créé à l'aide de la bibliothèque tempfile. Fondamentalement, j'essaie de créer une fonction qui accepte certaines données et génère un fichier csv temporaire basé sur lesdites données. Je me demandais s'il y avait un moyen d'obtenir le chemin de ce fichier temporaire?

8
Keyadun

Utilisation tempfile.NamedTemporaryFile pour créer un fichier temporaire avec un nom, puis utilisez le .name attribut de l'objet.

Notez qu'il existe des limitations spécifiques à la plate-forme sur la façon dont ce nom peut être utilisé. Le documentation dit:

Si le nom peut être utilisé pour ouvrir le fichier une deuxième fois, alors que le fichier temporaire nommé est toujours ouvert, cela varie selon les plates-formes (il peut être utilisé sur Unix; il ne peut pas sur Windows NT ou version ultérieure).

7
Barmar

tempfile.NamedTemporaryFile a une propriété .dir qui vous donnera ce que vous voulez.


EDIT: Non, ce n'est pas .name, @Barmar, mais en parcourant le code source de tempfile, je ne vois pas non plus de propriété .dir. Cependant, vous pouvez utilisez la propriété .name Conjointement avec la méthode dirname de os.path Comme suit:

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

Quoi qu'il en soit, si vous avez besoin du chemin du répertoire tempfile vous pouvez utiliser tempfile.gettempdir()

0
Papageno