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 :
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!