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

Apprenez à utiliser correctement les fichiers temporaires Python

coldplay.xixi
Libérer: 2021-03-29 10:57:10
avant
2599 Les gens l'ont consulté

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")
Copier après la connexion

Incorrect 2 :

import os
import tempfile
 
open(tempfile.mktemp(), "w")
Copier après la connexion

Incorrect 3 :

filename = "{}/{}.tmp".format(tempfile.gettempdir(), os.getpid())
open(filename, "w")
Copier après la connexion

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)
Copier après la connexion

Correct 2 :

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

Correct 3 :

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

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!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal