Mis a jour le 2025-04-14, 12:10

Fichiers temporaires

Il faut faire import tempfile
Fonction de création d'un fichier temporaire (avec droits d'accès seulement pour le créateur) :
  • (nbr, fileName) = tempfile.mkstemp() : créé un fichier temporaire et renvoie le numéro de filehandle, ainsi que le chemin complet, mais attention, le fichier reste ouvert, ce qui peut poser parfois des problèmes !
  • pour éviter de laisser le fichier ouvert, il vaut mieux faire :
    outfd, tmpFile = tempfile.mkstemp(...)
    fhOut = os.fdopen(outfd, 'w')
    fhOut.write(...)
    fhOut.close()
        
  • tempfile.mkstemp(prefix = 'data', suffix = '.txt') : le fichier a un préfixe data, et un suffixe .txt (par défaut, le préfixe est 'tmp'.
  • tempfile.mkstemp(dir = '/tmp') : directory de création est '/tmp' (défault sous unix).
Création d'un directory temporaire :
  • myDirName = tempfile.mkdtemp() : crée un directory temporaire et renvoie son nom.
  • paramètres :
    • prefix = 'data' : le prefixe du directory est 'data'.
    • suffix = .dir' : le suffixe du directory est '.dir.
    • dir = '/tmp' : le directory où il faut créer le sous directory.
Création d'un fichier temporaire, accessible uniquement par le créateur :
  • fh = tempfile.NamedTemporaryFile() : crée un fichier temporaire qui est détruit dès qu'il est fermé (sous linux, par défaut fichier créé dans /tmp).
  • le nom du fichier est récupérable par fh.name.
  • principaux paramètres :
    • mode : défaut est w+b
    • dir : directory où le fichier est créé (par défaut, /tmp).
    • prefix : préfixe du nom du fichier, par défaut tmp.
    • suffix : suffixe du nom du fichier, par défaut ''. Si on veut un fichier .dat, il faut utiliser suffix = '.dat'.
    • on peut mettre l'argument delete = False pour éviter que le fichier ne soit détruit à la fermeture de celui-ci.
  • faire fh.flush() pour passer toutes les écritures (pour qu'il y ait vraiment écriture physique sur le disque, il faut faire os.fsync(fh), ce qui n'est pas nécessaire pour qu'un autre process puisse correctement lire le même fichier).
Création d'un fichier temporaire anynonyme, accessible uniquement par le créateur :
  • fh = tempfile.TemporaryFile() : crée un fichier temporaire détruit dès qu'il est fermé. Sous linux, il n'est pas visible car l'entrée est détruite immédiatement.
  • principaux arguments :
    • mode : défaut est w+b
    • dir : directory où le fichier est créé.
Localisation des fichiers et directories temporaires :
  • tempfile.gettempdir() : permet de savoir quel est l'endroit par défaut (quand dir n'est pas indiqué dans l'appel de la fonction).
  • tempfile.tempdir = 'myDir' : permet de changer l'endroit par défaut de création des fichiers et directories temporaires. Par défaut, c'est /tmp sous linux, à moins qu'une des variables TMPDIR, TEMP ou TMP soit fixée (prises en compte dans cet ordre).

Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert