Maison développement back-end Tutoriel Python Explication détaillée des exemples de gestion de fichiers Python

Explication détaillée des exemples de gestion de fichiers Python

Jan 21, 2017 pm 02:36 PM

Les exemples de cet article décrivent la méthode de gestion des fichiers Python. Partagez-le avec tout le monde pour référence, comme suit :

1. Gestion de fichiers en Python

La gestion de fichiers est une fonction de base et un composant important de nombreuses applications. Python peut rendre la gestion des fichiers extrêmement simple, surtout par rapport à d'autres langages.
Ci-dessous, Peyton McCullough explique les bases de la gestion de fichiers.

Introduction

Les jeux auxquels vous avez joué utilisent des fichiers pour sauvegarder des archives ; les commandes que vous avez passées sont enregistrées dans des fichiers évidemment, le rapport que vous avez rédigé le matin est également enregistré dans des fichiers ;

La gestion de fichiers est une partie importante des nombreuses applications écrites dans presque toutes les langues. Python ne fait certainement pas exception. Dans cet article, nous explorerons comment utiliser certains modules pour manipuler des fichiers. Nous terminerons les opérations de lecture de fichiers, d'écriture de fichiers, d'ajout de contenu de fichier et quelques utilisations alternatives. OK, commençons.

Lire et écrire des fichiers

L'opération de fichier la plus élémentaire est bien sûr la lecture et l'écriture de données dans le fichier. C'est également très facile à maîtriser. Ouvrez maintenant un fichier en écriture :

fileHandle = open ( 'test.txt', 'w' )
Copier après la connexion

'w' signifie que le fichier sera écrit avec des données, le reste de l'instruction est facile à comprendre. L'étape suivante consiste à écrire les données dans le fichier :

fileHandle.write ( 'This is a test.\nReally, it is.' )
Copier après la connexion

Cette déclaration écrit "Ceci est un test." sur la première ligne du fichier et "Vraiment, c'est le cas sur la seconde". ligne du fichier. Enfin, nous devons nettoyer et fermer le fichier :

fileHandle.close()
Copier après la connexion

Comme vous pouvez le voir, c'est vraiment simple avec le mécanisme orienté objet de Python. Il convient de noter que lorsque vous utilisez la méthode « w » pour réécrire des données dans le fichier, tout le contenu original sera supprimé. Si vous souhaitez conserver le contenu original, vous pouvez utiliser la méthode "a" pour ajouter des données à la fin du fichier :

fileHandle = open ( 'test.txt', 'a' ) 
fileHandle.write ( '\n\nBottom line.' ) 
fileHandle.close()
Copier après la connexion

Ensuite, nous lisons test.txt et afficher le contenu :

fileHandle = open ( 'test.txt' ) 
print fileHandle.read() 
fileHandle.close()
Copier après la connexion

L'instruction ci-dessus lira l'intégralité du fichier et affichera les données qu'il contient. On peut également lire une ligne dans le fichier :

fileHandle = open ( 'test.txt' ) 
print fileHandle.readline() # "This is a test." 
fileHandle.close()
Copier après la connexion

En même temps, on peut également enregistrer le contenu du fichier dans une liste :

fileHandle = open ( 'test.txt' ) 
fileList = fileHandle.readlines()<DIV></DIV> 
for fileLine in fileList: 
  print &#39;>>&#39;, fileLine 
fileHandle.close()
Copier après la connexion

Lorsque Python lit un fichier, il se souviendra de sa position dans le fichier, comme indiqué ci-dessous :

fileHandle = open ( &#39;test.txt&#39; ) 
garbage = fileHandle.readline() 
fileHandle.readline() # "Really, it is."fileHandle.close()
Copier après la connexion

Comme vous pouvez le voir, seule la deuxième ligne est affiché. Cependant, nous pouvons résoudre ce problème en demandant à Python de lire depuis le début :

fileHandle = open ( &#39;test.txt&#39; ) 
garbage = fileHandle.readline() 
fileHandle.seek ( 0 ) 
print fileHandle.readline() # "This is a test." 
fileHandle.close()
Copier après la connexion

Dans l'exemple ci-dessus, nous demandons à Python de lire les données en commençant par le premier octet du déposer. Ainsi, la première ligne de texte s'affiche. Bien sûr, on peut aussi obtenir l'emplacement de Python dans le fichier :

fileHandle = open ( &#39;test.txt&#39; ) 
print fileHandle.readline() # "This is a test." 
print fileHandle.tell() # "17" 
print fileHandle.readline() # "Really, it is."
Copier après la connexion

ou lire quelques octets à la fois dans le fichier :

fileHandle = open ( &#39;test.txt&#39; ) 
print fileHandle.read ( 1 ) # "T" 
fileHandle.seek ( 4 ) 
print FileHandle.read ( 1 ) # " "(原文有错)
Copier après la connexion

Dans les environnements Windows et Macintosh, vous devrez parfois lire et écrire des fichiers en mode binaire, tels que des images et des fichiers exécutables. À ce stade, ajoutez simplement un "b" au paramètre de méthode d'ouverture du fichier :

fileHandle = open ( &#39;testBinary.txt&#39;, &#39;wb&#39; )
fileHandle.write ( &#39;There is no spoon.&#39; )
fileHandle.close()
fileHandle = open ( &#39;testBinary.txt&#39;, &#39;rb&#39; )
print fileHandle.read()
fileHandle.close()
Copier après la connexion

2. Obtenez des informations à partir des fichiers existants

Utiliser le module dans Python qui peut obtenir des informations à partir de fichiers existants. Vous pouvez utiliser le module "os" et le module "stat" pour obtenir des informations de base sur les fichiers :

import os 
import stat 
import time<DIV></DIV> 
fileStats = os.stat ( &#39;test.txt&#39; ) 
fileInfo = { 
  &#39;Size&#39; : fileStats [ stat.ST_SIZE ], 
  &#39;LastModified&#39; : time.ctime ( fileStats [ stat.ST_MTIME ] ), 
  &#39;LastAccessed&#39; : time.ctime ( fileStats [ stat.ST_ATIME ] ), 
  &#39;CreationTime&#39; : time.ctime ( fileStats [ stat.ST_CTIME ] ), 
  &#39;Mode&#39; : fileStats [ stat.ST_MODE ] 
} 
for infoField, infoValue in fileInfo: 
  print infoField, &#39;:&#39; + infoValue 
if stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ): 
  print &#39;Directory. &#39;
else: 
  print &#39;Non-directory.&#39;
Copier après la connexion

L'exemple ci-dessus crée un dictionnaire contenant des informations de base sur les fichiers. Ensuite, les informations pertinentes s'affichent et nous indiquent si le répertoire ouvert est un répertoire. On peut aussi essayer de voir si les types ouverts sont d'autres types :

import os 
import stat 
fileStats = os.stat ( &#39;test.txt&#39; ) 
fileMode = fileStats [ stat.ST_MODE ] 
if stat.S_ISREG ( fileStats [ stat.ST_MODE ] ): 
  print &#39;Regular file.&#39;
elif stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ): 
  print &#39;Directory.&#39;
elif stat.S_ISLNK ( fileStats [ stat.ST_MODE ] ): 
  print &#39;Shortcut.&#39;
elif stat.S_ISSOCK ( fileStats [ stat.ST_MODE ] ): 
  print &#39;Socket.&#39;
elif stat.S_ISFIFO ( fileStats [ stat.ST_MODE ] ): 
  print &#39;Named pipe.&#39;
elif stat.S_ISBLK ( fileStats [ stat.ST_MODE ] ): 
  print &#39;Block special device.&#39;
elif stat.S_ISCHR ( fileStats [ stat.ST_MODE ] ):
Copier après la connexion

De plus, on peut utiliser "os.path" pour obtenir des informations de base :

import os.path 
fileStats = &#39;test.txt&#39;
if os.path.isdir ( fileStats ): 
  print &#39;Directory.&#39;
elif os.path.isfile ( fileStats ): 
  print &#39;File.&#39;
elif os.path.islink ( fileStats ): 
  print &#39;Shortcut.&#39;
elif os.path.ismount ( fileStats ): 
  print &#39;Mount point.&#39;
import os 
for fileName in os.listdir ( &#39;/&#39; ): 
  print fileName
Copier après la connexion

Comme vous pouvez le constater, cela est très simple et peut se faire en trois lignes de code.

Créer un répertoire est également très simple :

import os 
os.mkdir ( &#39;testDirectory&#39; )
Copier après la connexion

Supprimer le répertoire qui vient d'être créé :

import os 
os.rmdir ( &#39;testDirectory )
Copier après la connexion

Vous pouvez également créer des répertoires à plusieurs niveaux :

import os
os.makedirs ( &#39;I/will/show/you/how/deep/the/rabbit/hole/goes&#39; )
    os.makedirs ( &#39;I/will/show/you/how/deep/the/rabbit/hole/goes&#39; )
Copier après la connexion

Si vous n'ajoutez rien aux dossiers créés, vous pouvez les supprimer tous en même temps (c'est-à-dire supprimer tous les fichiers vides répertoriés dossier) :

import os
os.removedirs ( &#39;I/will/show/you/how/deep/the/rabbit/hole/goes&#39;
Copier après la connexion

Lorsque nous devons opérer sur un type de fichier spécifique, nous pouvons choisir le module "fnmatch". Voici le contenu du fichier « .txt » et le nom du fichier « .exe » :

import fnmatch
import os
for fileName in os.listdir ( &#39;/&#39; ):
  if fnmatch.fnmath ( fileName, &#39;*.txt&#39; ):
    print open ( fileName ).read()
  elif fnmatch.fnmatch ( fileName, &#39;*.exe&#39; ):
    print fileName
Copier après la connexion

les caractères peuvent représenter n'importe quelle longueur de caractères. Si vous souhaitez faire correspondre un caractère, utilisez le symbole "?" :

import fnmatch
import os
for fileName in os.listdir ( &#39;/&#39; ):
  if fnmatch.fnmatch ( fileName, &#39;?.txt&#39; ):
    print &#39;Text file.&#39;
Copier après la connexion

Le module "fnmatch" prend en charge les expressions régulières :

import fnmatch 
import os 
import re 
filePattern = fnmatch.translate ( &#39;*.txt&#39; ) 
for fileName in os.listdir ( &#39;/&#39; ): 
  if re.match ( filePattern, fileName ): 
    print &#39;Text file.&#39;
Copier après la connexion

Si vous n'avez besoin de faire correspondre qu'un seul type de fichier, une meilleure façon est d'utiliser le module "glob". Le format de ce module est similaire à "fnmatch" :

import glob 
for fileName in glob.glob ( &#39;*.txt&#39; ): 
  print &#39;Text file.&#39;
Copier après la connexion

Il est également possible de faire correspondre une plage de caractères, comme dans une expression régulière. Supposons que vous souhaitiez afficher le nom d'un fichier avec un seul chiffre avant l'extension :

import glob 
for fileName in glob.glob ( &#39;[0-9].txt&#39; ): 
  print filename
Copier après la connexion

Le module "glob" utilise le module "fnmatch" pour y parvenir.

4. Marshaling des données

En utilisant le module présenté dans la section précédente, vous pouvez lire et écrire des chaînes dans des fichiers.

Cependant, vous devrez parfois transmettre d'autres types de données, tels qu'une liste, un tuple, un dictionnaire et d'autres objets. En Python, vous pouvez le faire en utilisant Pickling. Vous pouvez effectuer le marshalling des données à l'aide du module "pickle" de la bibliothèque standard Python.

Ensuite, regroupons une liste contenant des chaînes et des nombres :

import pickle 
fileHandle = open ( &#39;pickleFile.txt&#39;, &#39;w&#39; ) 
testList = [ &#39;This&#39;, 2, &#39;is&#39;, 1, &#39;a&#39;, 0, &#39;test.&#39; ] 
pickle.dump ( testList, fileHandle ) 
fileHandle.close()
Copier après la connexion

Il n'est pas non plus difficile de diviser le groupe :

import pickle 
fileHandle = open ( &#39;pickleFile.txt&#39; ) 
testList = pickle.load ( fileHandle ) 
fileHandle.close()
Copier après la connexion

Essayez maintenant de stocker des données plus complexes :

import pickle 
fileHandle = open ( 'pickleFile.txt', 'w' ) 
testList = [ 123, { 'Calories' : 190 }, 'Mr. Anderson', [ 1, 2, 7 ] ] 
pickle.dump ( testList, fileHandle ) 
fileHandle.close()
import pickle 
fileHandle = open ( &#39;pickleFile.txt&#39; ) 
testList = pickle.load ( fileHandle ) 
fileHandle.close()
Copier après la connexion

如上所述,使用Python的"pickle"模块编组确实很简单。众多对象可以通过它来存储到文件中。如果可以的话,"cPickle"同样胜任这个工作。它和"pickle"模块一样,但是速度更快:

import cPickle 
fileHandle = open ( &#39;pickleFile.txt&#39;, &#39;w&#39; ) 
cPickle.dump ( 1776, fileHandle ) 
fileHandle.close()
Copier après la connexion

五、创建"虚拟"文件

你用到的许多模块包含需要文件对象作为参数的方法。但是,有时创建并使用一个真实的文件并让人感到有些麻烦。所幸的是,在Python中,你可以使用"StringIO"模块来创建文件并将其保存在内存中:

import StringIO 
fileHandle = StringIO.StringIO ( "Let freedom ring" ) 
print fileHandle.read() # "Let freedom ring." 
fileHandle.close()
Copier après la connexion

cStringIO"模块同样有效。它的使用方法和"StringIO"一样,但就像"cPickle"之于"pickle",它速度更快:

import cStringIO 
fileHandle = cStringIO.cStringIO ( "To Kill a Mockingbird" ) 
print fileHandle.read() # "To Kill a Mockingbid" 
fileHandle.close()
Copier après la connexion

结论

文件管理,是众多编程语言的程序员在编写应用程序是经常遇到的问题。幸好,和其它语言相比,Python使其出乎意料地容易。Python的标准库中提供了许多相关的模块帮助程序员解决这方面的问题,而它的面向对象的机制也简化了操作。

好了,现在你已经了解了Python中文件管理的基本知识,可以在今后的应用程序中很好地使用了。

希望本文所述对大家Python程序设计有所帮助。

更多Python 文件管理实例详解相关文章请关注PHP中文网!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte Mar 05, 2025 am 09:58 AM

Ce tutoriel montre comment utiliser Python pour traiter le concept statistique de la loi de Zipf et démontre l'efficacité de la lecture et du tri de Python de gros fichiers texte lors du traitement de la loi. Vous vous demandez peut-être ce que signifie le terme distribution ZIPF. Pour comprendre ce terme, nous devons d'abord définir la loi de Zipf. Ne vous inquiétez pas, je vais essayer de simplifier les instructions. La loi de Zipf La loi de Zipf signifie simplement: dans un grand corpus en langage naturel, les mots les plus fréquents apparaissent environ deux fois plus fréquemment que les deuxième mots fréquents, trois fois comme les troisième mots fréquents, quatre fois comme quatrième mots fréquents, etc. Regardons un exemple. Si vous regardez le corpus brun en anglais américain, vous remarquerez que le mot le plus fréquent est "th

Comment utiliser la belle soupe pour analyser HTML? Comment utiliser la belle soupe pour analyser HTML? Mar 10, 2025 pm 06:54 PM

Cet article explique comment utiliser la belle soupe, une bibliothèque Python, pour analyser HTML. Il détaille des méthodes courantes comme find (), find_all (), select () et get_text () pour l'extraction des données, la gestion de diverses structures et erreurs HTML et alternatives (Sel

Filtrage d'image en python Filtrage d'image en python Mar 03, 2025 am 09:44 AM

Traiter avec des images bruyantes est un problème courant, en particulier avec des photos de téléphones portables ou de caméras basse résolution. Ce tutoriel explore les techniques de filtrage d'images dans Python à l'aide d'OpenCV pour résoudre ce problème. Filtrage d'image: un outil puissant Filtre d'image

Comment travailler avec des documents PDF à l'aide de Python Comment travailler avec des documents PDF à l'aide de Python Mar 02, 2025 am 09:54 AM

Les fichiers PDF sont populaires pour leur compatibilité multiplateforme, avec du contenu et de la mise en page cohérents sur les systèmes d'exploitation, les appareils de lecture et les logiciels. Cependant, contrairement aux fichiers de texte brut de traitement Python, les fichiers PDF sont des fichiers binaires avec des structures plus complexes et contiennent des éléments tels que des polices, des couleurs et des images. Heureusement, il n'est pas difficile de traiter les fichiers PDF avec les modules externes de Python. Cet article utilisera le module PYPDF2 pour montrer comment ouvrir un fichier PDF, imprimer une page et extraire du texte. Pour la création et l'édition des fichiers PDF, veuillez vous référer à un autre tutoriel de moi. Préparation Le noyau réside dans l'utilisation du module externe PYPDF2. Tout d'abord, l'installez en utilisant PIP: pip is p

Comment se cacher en utilisant Redis dans les applications Django Comment se cacher en utilisant Redis dans les applications Django Mar 02, 2025 am 10:10 AM

Ce tutoriel montre comment tirer parti de la mise en cache Redis pour augmenter les performances des applications Python, en particulier dans un cadre Django. Nous couvrirons l'installation redis, la configuration de Django et les comparaisons de performances pour mettre en évidence le bien

Comment effectuer l'apprentissage en profondeur avec TensorFlow ou Pytorch? Comment effectuer l'apprentissage en profondeur avec TensorFlow ou Pytorch? Mar 10, 2025 pm 06:52 PM

Cet article compare TensorFlow et Pytorch pour l'apprentissage en profondeur. Il détaille les étapes impliquées: préparation des données, construction de modèles, formation, évaluation et déploiement. Différences clés entre les cadres, en particulier en ce qui concerne le raisin informatique

Comment implémenter votre propre structure de données dans Python Comment implémenter votre propre structure de données dans Python Mar 03, 2025 am 09:28 AM

Ce didacticiel montre la création d'une structure de données de pipeline personnalisée dans Python 3, en tirant parti des classes et de la surcharge de l'opérateur pour une fonctionnalité améliorée. La flexibilité du pipeline réside dans sa capacité à appliquer une série de fonctions à un ensemble de données, GE

Introduction à la programmation parallèle et simultanée dans Python Introduction à la programmation parallèle et simultanée dans Python Mar 03, 2025 am 10:32 AM

Python, un favori pour la science et le traitement des données, propose un écosystème riche pour l'informatique haute performance. Cependant, la programmation parallèle dans Python présente des défis uniques. Ce tutoriel explore ces défis, en se concentrant sur l'interprète mondial

See all articles