Comment effectuer des opérations d'entrée / sortie Python sur des fichiers avec une fonction ouverte Python
- 3202
- 764
- Jeanne Dupont
La manipulation des fichiers est une opération qui, tôt ou tard, nous aurons besoin de jouer dans nos programmes. Le python intégré ouvrir
La fonction renvoie un objet de fichier
, qui nous permet d'interagir avec des fichiers dans différents modes: nous les verrons dans cet article.
Dans ce tutoriel Python, vous apprendrez:
- Comment utiliser la fonction ouverte Python.
- Quels sont les différents modes de fonctionnement qui peuvent être utilisés avec la fonction ouverte Python.
- Comment interagir avec un objet de fichier.
- Pourquoi est important de fermer un objet de fichier et comment le faire.
Exigences et conventions logicielles utilisées
Catégorie | Exigences, conventions ou version logicielle utilisée |
---|---|
Système | Indépendant du SO |
Logiciel | python3 |
Autre | Aucune autorisation spéciale requise. |
Conventions | # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier >>> - Commandes Python à exécuter dans un shell interactif |
Instructions d'entrée et de sortie Python
Il existe de nombreuses raisons pour lesquelles un programme pourrait avoir besoin d'interagir avec les fichiers: la lecture des configurations et des paramètres qui influenceront le comportement du programme lui-même, ou peut-être les données persistantes. Dans ce tutoriel, nous verrons comment accomplir de telles tâches, en utilisant la fonction ouverte Python et en interagissant avec Fichier des objets
.
La fonction ouverte Python
Avant de commencer à lire ou à écrire des fichiers, nous devons apprendre comment nous pouvons y accéder. La fonction Open Python ouvre un fichier et renvoie un objet de fichier
, élever un Oserror
exception si la ressource ne peut pas être accessible. La fonction n'a qu'un seul argument obligatoire, déposer
, qui est la chaîne ou l'octet-objet représentant le chemin du fichier à ouvrir:
>>> FOBject = Open ('LinuxConfig.SMS')
Copie Mode de lecture - 'R'
Nous avons ouvert le linuxconfig.SMS
le fichier, et l'objet de fichiers résultant est maintenant référencé par fobject
. C'est un python objet de fichier
qui implémente des méthodes comme écrire
et lire
. Et si le linuxconfig.SMS
Le fichier n'existait pas? UN Filenotfounderror
Une exception serait soulevée:
>>> FOBject = Open ('LinuxConfig.txt ') traceback (dernier appel dernier): fichier "", ligne 1, dans FilenotFoundError: [errno 2] pas de tel fichier ou répertoire: 'LinuxConfig.SMS'
Copie Comme nous venons de le dire ci-dessus, le seul argument obligatoire de la fonction ouverte Python est déposer
. Lorsqu'il est utilisé comme dans l'exemple ci-dessus, la fonction fonctionne dans mode texte
et un fichier est ouvert uniquement pour la lecture. L'équivalent verbeux de ce que nous avons fait ci-dessus est:
>>> FOBject = Open ('LinuxConfig.txt ',' rt ')
Copie Le deuxième argument de la fonction est le mode
. Dans ce cas, 'rt'
, où le 'R'
représente lire
et le 'T'
Spécifie que nous opérons en mode texte. Il est également possible d'ouvrir des fichiers en mode binaire, en remplacement 'T'
avec 'B'
: Dans ce cas, le contenu des octets, sans aucun encodage sera retourné. Depuis 'T'
est le mode par défaut, à partir de maintenant, nous l'omettre. Pour lire le contenu du fichier que nous pouvons utiliser, par exemple, le lire
méthode. Il renverra tout le contenu de fichier en tant que chaîne:
>>> Fobject.lire () 'LinuxConfig est génial!\ n '
Copie Quand fonctionne en mode de lecture, toute tentative d'écriture dans le fichier augmentera un Io.Sans position
exception:
>>> Fobject.écrire ('LinuxConfig est génial!') Traceback (dernier appel dernier): fichier "", ligne 1, dans Io.Non soutenu
Copie De toute évidence, ce n'est pas le seul mode disponible. Voyons les autres.
Mode d'écriture - 'W'
Lors de la spécification 'W'
comme la valeur du mode
argument du ouvrir
fonction, si le fichier existe, c'est le premier tronqué
(son contenu entier est jeté) puis il est ouvert à l'écriture; Si le fichier n'existe pas, il est créé. Dans ce cas, nous utilisons le écrire
Méthode de l'objet de fichier:
>>> FOBject = Open ('LinuxConfig.txt ',' w ') >>> fobject.Écrire ('Nous venons d'écrire au fichier!') 26 >>> Fobject.fermer()
Copie Nous avons ouvert le fichier pour l'écriture que nous avons utilisé le écrire
Méthode de l'objet de fichier, qui écrit la chaîne et renvoie le nombre de caractères écrits, 26 Dans ce cas, nous avons finalement utilisé le fermer
Méthode pour fermer l'objet: cette étape est vraiment importante, car l'opération d'écriture ne devient efficace qu'une fois que le contenu du fichier est rincé (nous verrons l'importance de fermer un objet de fichier à la fin du tutoriel). Si nous examinons maintenant le contenu du fichier, nous voyons que son contenu précédent a été écrasé et qu'il ne contient que la chaîne:
'Nous venons d'écrire au fichier!'
Comme cela s'est produit ci-dessus, si nous essayons d'effectuer une opération non autorisée par le mode de fonctionnement, une exception est soulevée. Dans ce cas, si nous essayons de lire le contenu du fichier, nous obtenons le résultat suivant:
>>> FOBject = Open ('LinuxConfig.txt ',' w ') >>> fobject.read () traceback (dernier appel dernier): fichier "", ligne 1, dans IO.Non étayé: non lisible
Copie Ajout d'un fichier: mode 'A'
Et si nous voulons ajouter un fichier, en gardant son contenu actuel? Nous devons utiliser le 'un'
(Ajouter) Mode. Lorsque ce mode est utilisé, si un fichier existe, il est ouvert à l'écriture et que le flux est positionné à la fin de celui-ci. De cette façon, le contenu précédent du fichier sera conservé. Si le fichier n'existe pas, il est créé:
>>> FOBject = Open ('LinuxConfig.txt ',' a ') >>> fobject.Écrire ('Texte annexe!') 14 >>> Fobject.fermer()
Copie Nous avons ouvert le fichier dans 'un'
mode et écrire la chaîne «Texte annexe» dans le fichier. Le contenu précédent n'a pas été tronqué:
LinuxConfig est génial! Texto annexé!
Le mode «X» - Création exclusive
Ce mode d'ouverture est disponible uniquement dans Python3. Lorsqu'il est utilisé, un FileExisterSerror
il est soulevé si le fichier existe déjà. Si le fichier n'existe pas, il est créé et ouvert à l'écriture:
fileObject = Open ('LinuxConfig.txt ',' x ') traceback (dernier appel dernier): fichier "", ligne 1, dans FileExistSerror: [Errno 17] Le fichier existe: 'LinuxConfig.SMS'
Copie Chaque fois que nous écrivons quelque chose, il est annexé au contenu précédent, jusqu'à ce que nous fermons l'objet de fichier:
>>> fileObject = open ('LinuxConfig1.txt ',' x ') >>> fileObject.écriture ('LinuxConfig est à nouveau génial \ n') >>> fileObject.Écrivez ('je répète: LinuxConfig est génial!\ n ') >>> fileObject.fermer()
Copie Après avoir exécuté le code ci-dessus, le nouveau contenu du fichier sera:
LinuxConfig est génial! Je répète: LinuxConfig est génial!
Le caractère '+'
Nous avons vu les modes de base qui peuvent être utilisés avec le ouvrir
fonction et comment ils fonctionnent. En ajoutant le '+'
caractère à chacun d'eux, nous pouvons obtenir de nouveaux comportements.
Le mode 'r +'
Lorsque vous ajoutez le caractère '+' en mode 'r' ('r +'), un fichier est ouvert à la fois pour la lecture et l'écriture; Une exception est soulevée si le fichier n'existe pas. Le flux est positionné au début du fichier, donc si quelque chose est écrit, il remplacera le contenu précédent. Si nous sommes dans ce mode, mais que nous voulons toujours que le nouveau contenu soit annexé, réservant l'existence, nous devons modifier la position actuelle en utilisant le chercher
Méthode de l'objet de fichier avant d'écrire, de la manière suivante:
>>> fileObject = open ('LinuxConfig.txt ',' r + '): >>> fileObject.chercher (0,2) >>> fileObject.écrire ('ce texte sera annexé') >>> fileObject.fermer()
Copie Le chercher
La méthode prend deux arguments: le premier est le compenser
, La seconde est la position à partir de laquelle le décalage doit être calculé, où 0
(La valeur par défaut si cet argument est omis) est le début du fichier, 1
est le décalage actuel, et 2
est la fin du fichier. Dans ce cas, nous avons utilisé un décalage de 0 à partir de la fin du fichier, passant ainsi à la fin du fichier lui-même. Notez que la spécification d'un décalage non nul dans ce cas aurait soulevé un Io.Sans position
exception, car il est impossible de faire une recherche non nulle et non liée.
Le mode 'W +'
Ce mode fonctionne de cette façon: le fichier sera ouvert à la fois pour la lecture et l'écriture. Si le fichier existe, son contenu sera tronqué, sinon le fichier sera créé. Tout comme l'exemple précédent, il sera possible de lire et d'écrire le fichier, mais il y a deux grandes différences: la première est que le contenu du fichier sera tronqué dès qu'il sera ouvert (et non si vous écrivez actif quelque chose pour il), le second est que le fichier sera créé s'il n'existe pas.
Le mode 'A +'
Lorsque vous spécifiez ce mode avec la fonction ouverte Python, nous obtenons le comportement suivant: tout comme dans les exemples précédents, le fichier est ouvert à la fois pour la lecture et pour l'écriture, cependant, le flux est positionné à la fin du fichier, donc tout nouveau contenu qu'il est ajouté à l'existence.
Deux choses doivent être notées: puisque le flux est positionné à la fin du fichier, si nous essayons d'utiliser le lire
Méthode sur l'objet de fichier Pour obtenir le contenu actuel, il renverra une chaîne vide. Pour pouvoir lire le contenu, nous devons d'abord passer au début du fichier, en utilisant la méthode de recherche de la manière suivante:
fileobject.chercher (0)
Copie La deuxième chose très importante à remarquer, c'est que lors de l'utilisation de ce mode, même si nous passons au début du fichier comme nous l'avons fait dans l'exemple ci-dessus, et effectuons une écriture, le contenu existant qu'il n'est pas perdu: le nouveau contenu C'est toujours annexé.
Clôture de l'objet de fichier
Après avoir fini de travailler avec notre objet de fichier, nous devons toujours nous rappeler de le fermer, pour plusieurs raisons. Dans Primis parce que certaines opérations, comme l'écriture, ne deviennent efficaces que lorsque l'objet de fichier est fermé et que son contenu est rincé, secondairement aux ressources système gratuites et à la clarté du code. Il y a deux façons de fermer un objet de fichier: le premier est en appelant le fermer
Méthode sur l'objet de fichier, comme nous l'avons vu ci-dessus. Le second, c'est en utilisant le avec
déclaration:
avec ouvert ('LinuxConfig.txt ',' r ') as fileObject: content = fileObject.lire () # effectuer les opérations nécessaires
Copie que se passe-t-il dans ce cas? En utilisant cette déclaration, l'expression à côté de avec
, dans ce cas Open ('LinuxConfig.txt ',' r ')
, est évalué dans un objet de fichier, qui prend en charge le protocole de gestion de contexte, car il implémente le __entrer__
et __sortie__
méthodes. L'objet de fichier est ensuite aliasé à fileobject
. Une fois le code contenu dans le bloc __sortie__
La méthode de l'objet de fichier est automatiquement appelée et l'objet de fichier est fermé. L'utilisation d'un gestionnaire de contexte est vraiment utile, car l'objet sera toujours fermé dès que nous finirons de l'opérer: une chose de moins à retenir.
Conclusions
Dans ce tutoriel, nous avons appris à utiliser le python intégré ouvrir
fonction pour créer un objet de fichier, utilisé pour interagir avec un fichier. Nous avons vu les différents modes qui peuvent être transmis à la fonction et comment ils modifient le comportement de l'objet de fichier. Enfin, nous avons vu pourquoi il est important de toujours fermer un objet de fichier après avoir fini de travailler avec lui, comment nous pouvons le faire en utilisant le fermer
méthode, et comment cela peut être fait automatiquement, si nous utilisons le avec
déclaration et un gestionnaire de contexte. Comme toujours suggéré, vous pouvez consulter la documentation officielle pour améliorer encore vos connaissances.
Voir également notre tutoriel Python plus étendu pour plus de concepts liés à Python ou nos fichiers de lecture et d'écriture avec un guide Python.
Tutoriels Linux connexes:
- Gestion de la saisie des utilisateurs dans les scripts bash
- Masterring Bash Script Loops
- Fichiers de configuration Linux: 30 premiers
- Manipulation de Big Data pour le plaisir et le profit Partie 1
- Manipulation des mégadonnées pour le plaisir et le profit Partie 3
- Une introduction à l'automatisation Linux, des outils et des techniques
- Choses à installer sur Ubuntu 20.04
- Mint 20: Mieux que Ubuntu et Microsoft Windows?
- Manipulation de Big Data pour le plaisir et le profit Partie 2
- Comment monter l'image ISO sur Linux
- « Comment interagir avec les conteneurs Docker
- Comment installer NextCloud sur Ubuntu 18.04 Bionic Beaver Linux »