Maison  >  Article  >  développement back-end  >  Apprenez à utiliser correctement les fichiers temporaires Python

Apprenez à utiliser correctement les fichiers temporaires Python

coldplay.xixi
coldplay.xixiavant
2021-03-29 10:57:102394parcourir

Apprenez à utiliser correctement les fichiers temporaires Python

1. Préface

Les fichiers temporaires sont généralement utilisés pour enregistrer des données qui ne peuvent pas être enregistrées en mémoire, ou pour transmettre des données qui doivent l'être. lire à partir du fichier programme externe. Généralement, nous générerons un nom de fichier unique dans le répertoire /tmp, mais créer des fichiers temporaires en toute sécurité n'est pas si simple et doit suivre de nombreuses règles. N'essayez jamais de le faire vous-même, utilisez plutôt les fonctions de la bibliothèque pour le faire. Faites également attention à nettoyer les fichiers temporaires.

Le plus gros problème causé par les fichiers temporaires est que le nom du fichier peut être prédit, ce qui permet aux utilisateurs malveillants de prédire le nom du fichier temporaire et de créer des liens symboliques pour détourner le fichier temporaire.

Recommandations d'apprentissage gratuites associées : Tutoriel vidéo Python

Introduction au module tempfile

Le module généralement utilisé pour créer des fichiers temporaires est tempfile. Les fonctions suivantes sont des fonctions de bibliothèque de modules couramment utilisées :

  • tempfile.mktemp # Dangereux, utilisation interdite
  • tempfile.mkstemp # Créer aléatoirement des fichiers tmp. Les fichiers créés par défaut se trouvent dans le répertoire /tmp Bien sûr, vous pouvez également spécifier (vous pouvez utiliser)
  • tempfile.TemporaryFile # Créer des fichiers en mémoire. ne pas être stocké sur le disque après la fermeture. C'est-à-dire supprimer (peut être utilisé)
  • tempfile.NamedTemporaryFile(delete=True) Lorsque delete=True, l'effet est le même que ci-dessus. il sera stocké sur le disque (peut être utilisé)

3. Exemple d'introduction

Les méthodes suivantes présentent des moyens sûrs et dangereux de créer des fichiers temporaires.

3.1 Exemple incorrect :

Incorrect 1 :

import os
import tempfile
 
# This will most certainly put you at risk
tmp = os.path.join(tempfile.gettempdir(), filename)
if not os.path.exists(tmp):
    with open(tmp, "w") file:
        file.write("defaults")

Incorrect 2 :

import os
import tempfile
 
open(tempfile.mktemp(), "w")

Incorrect 3 :

filename = "{}/{}.tmp".format(tempfile.gettempdir(), os.getpid())
open(filename, "w")

3.2 Exemple correct

Corriger 1 :

fd, path = tempfile.mkstemp()
try:
    with os.fdopen(fd, 'w') as tmp:
        # do stuff with temp file
        tmp.write('stuff')
finally:
    os.remove(path)

Correct 2 :

# 句柄关闭,文件即删除
with tempfile.TemporaryFile() as tmp:
    # Do stuff with tmp
    tmp.write('stuff')

Correct 3 :

tmp = tempfile.NamedTemporaryFile(delete=True)
try:
    # do stuff with temp
    tmp.write('stuff')
finally:
    tmp.close()  # 文件关闭即删除

Recommandations d'apprentissage gratuites associées : Tutoriel Python(vidéo)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer