Maison  >  Article  >  développement back-end  >  Résumé de l'apprentissage de base de Python (8)

Résumé de l'apprentissage de base de Python (8)

PHP中文网
PHP中文网original
2017-07-14 18:13:141460parcourir

10. Fichiers et exceptions

Apprenez à traiter des fichiers, laissez le programme analyser rapidement de grandes quantités de données, apprenez à gérer les erreurs et évitez que le programme ne plante en cas d'accident. En savoir plus sur les exceptions. Les exceptions sont des objets spéciaux créés par Python. Elles sont utilisées pour gérer les erreurs qui se produisent lors de l'exécution d'un programme et améliorer l'applicabilité, la convivialité et la stabilité du programme.

Module d'apprentissage json, json peut être utilisé pour enregistrer les données utilisateur afin d'éviter toute perte lorsque le programme s'arrête de manière inattendue.

Apprendre à traiter des fichiers et à enregistrer des données peut rendre le programme plus facile à utiliser. Les utilisateurs peuvent choisir le type de données à saisir et quand les saisir. Ils peuvent également fermer le programme après avoir utilisé le programme pour traiter quelque chose et continuer à le faire. la prochaine fois. .

Apprenez à gérer les exceptions, aidez à gérer les situations où les fichiers n'existent pas et traitez divers problèmes susceptibles de faire planter le programme, rendant le programme plus robuste face à diverses erreurs, que ces données erronées proviennent d'erreurs involontaires ou contre les tentatives malveillantes de corrompre un programme.

10.1 Lecture des données à partir de fichiers

Pour lire un fichier, vous pouvez lire le fichier entier d'un coup ou lire le fichier ligne par ligne. Choisissez votre propre méthode de lecture en fonction de la taille du fichier.

10.1.1 Lire l'intégralité du fichier

En Python, il y a 3 étapes pour lire et écrire des fichiers :

 1. Appelez la fonction open() et renvoyez un objet File.

 2. Appelez la méthode read() ou write() de l'objet File.

 3. Appelez la méthode close() de l'objet File pour fermer le fichier.

Utilisez la fonction open() pour ouvrir le fichier

 avec open(nom de fichier) comme file_object :

                contents = file_object.read() # Pas besoin d'appeler la méthode de fermeture, cela ferme automatiquement le fichier.

Trouvera le fichier à ouvrir dans le répertoire courant du fichier.

La méthode read() lit le contenu du fichier

 Méthode read() de l'objet fichier :

>>> helloContent = helloFile.read()

>>> helloContent

'Hello world!'

>>> bonjourContent = bonjourFichier.read() >>> bonjourContenu 'Bonjour tout le monde !'

Vous pouvez utiliser la méthode readlines() pour obtenir une liste de chaînes du fichier. Chaque chaîne de la liste correspond à chaque ligne de texte.

10.1.2 Chemin du fichier

Notez les barres obliques, les barres obliques inverses sous Windows et les barres obliques sous OS X et Linux.

 avec open('text_filesfilename.txt') comme file_object.

Il existe deux façons de spécifier un chemin de fichier.

  • "Chemin absolu" commence toujours à partir du dossier racine.
  • "Chemin relatif", qui est relatif au répertoire de travail actuel du programme.

Chemin absolu du fichier

Gagner :

file_path = 'C:Usersehmatthesother_filestext_filesfilename.txt'

 avec open(file_path) comme file_object :

Linux et OS :

file_path = '/home/ehmatthes/other_files/text_files/filename.txt'

 avec open(file_path) comme file_object :

Il existe également des dossiers point (.) et point (..). Ce ne sont pas de vrais dossiers, mais des noms spéciaux qui peuvent être utilisés dans les chemins. Un seul point (« point »), lorsqu'il est utilisé comme nom de dossier, est l'abréviation de « ce répertoire ». Les deux points (« points ») désignent le dossier parent.

 Gestion des chemins absolus et relatifs

 1.os.path module fournit certaines fonctions qui renvoient le chemin absolu d'un chemin relatif et vérifient si le chemin donné est un chemin absolu.

 2. L'appel de os.path.abspath(path) renverra la chaîne du chemin absolu du paramètre. C'est un moyen simple de convertir un chemin relatif en chemin absolu.

 3. Appelez os.path.isabs(path). Si le paramètre est un chemin absolu, il renvoie True. Si le paramètre est un chemin relatif, il renvoie False.

 4. L'appel de os.path.relpath(path, start) renverra la chaîne du chemin relatif du chemin de départ au chemin.

5. Si start n'est pas fourni, le répertoire de travail actuel est utilisé comme chemin de démarrage.

10.1.3 Lire les données du fichier ligne par ligne

 pour ligne dans ligne :

 fonction de remplacement replace()

file.replace('chien', 'chat')

10.2 Écriture de fichiers

10.2.1 Écrire un fichier vide

open('file', 'w') fournit deux paramètres réels, le nom du fichier et l'opération

1. Mode lecture 'r'

 2. Mode d'écriture 'w'

 3. Mode supplémentaire 'a'

 4. Mode lecture et écriture ‘r+’

5. Si le paramètre mode est omis, python n'ouvrira le fichier qu'en mode lecture seule par défaut.

6. Si le fichier n'existe pas, open générera automatiquement le fichier.

 7. L'entrée est Entrée et la sortie est Sortie Par conséquent, nous désignons collectivement l'entrée et la sortie par Entrée/Sortie, ou en abrégé IO.

8. Lors de la saisie du mot de passe, si vous souhaitez qu'il soit invisible, vous devez utiliser la méthode getpass dans le module getpass.

Remarque, S'il est ouvert en mode écriture 'w', le fichier sera effacé s'il existe déjà.

Si le nom de fichier passé à open() n'existe pas, le mode écriture et le mode ajout créeront un nouveau fichier vide . Après avoir lu ou écrit un fichier, appelez la méthode close() avant que le fichier puisse être rouvert.

Python ne peut écrire des chaînes que dans des fichiers texte. Pour stocker des données numériques dans un fichier texte, vous devez utiliser la fonction str pour les convertir au format chaîne.

>>> baconFile = open('bacon.txt', 'w')

>>> baconFile.write('Hello world!n')

13

 >>> baconFile.close()

>>> baconFile = open('bacon.txt', 'a')

>>> baconFile.write('Bacon is not a vegetable.')

25

>>> baconFile.close()

>>> baconFile = open('bacon.txt')

>>> content = baconFile.read()

>>> baconFile.close()

>>> print(content)

 Hello world! Bacon is not a vegetable.

>>> baconFile = open('bacon.txt', 'w') >>> baconFile.write('Bonjour tout le monde !n') 13 >>> baconFile.close() >>> baconFile = open('bacon.txt', 'a') >>> baconFile.write('Le bacon n'est pas un légume.') 25 >>> baconFile.close() >>> baconFile = open('bacon.txt') >>> contenu = baconFile.read() >>> baconFile.close() >>> imprimer(contenu) Bonjour tout le monde ! Le bacon n'est pas un légume.

Tout d'abord, nous ouvrons bacon.txt en mode écriture. Puisque bacon.txt n’existe pas encore, Python en crée un. Appelez write() sur le fichier ouvert et transmettez le paramètre de chaîne 'Hello world! n' à write(), écrivez la chaîne dans le fichier et renvoyez le nombre de caractères écrits, y compris les nouvelles lignes. Fermez ensuite le fichier.

Pour ajouter du texte au contenu existant du fichier, plutôt que de remplacer la chaîne que nous venons d'écrire, nous ouvrons le fichier en mode ajout. Écrivez « Le bacon n'est pas un légume » dans le fichier et fermez-le. Enfin, pour imprimer le contenu du fichier à l'écran, nous ouvrons le fichier dans le mode de lecture par défaut, appelons read(), enregistrons le contenu résultant dans content, fermons le fichier et imprimons le contenu.

Veuillez noter que la méthode write() n'ajoute pas automatiquement un caractère de nouvelle ligne à la fin de la chaîne comme le fait la fonction print(). Vous devez ajouter ce personnage vous-même.

Utilisez le module étagère pour enregistrer les variables

À l'aide du module shelve, vous pouvez enregistrer les variables des programmes Python dans des fichiers étagère binaires. De cette façon, le programme peut récupérer les données des variables du disque dur. Le module shelve vous permet d'ajouter des fonctionnalités "enregistrer" et "ouvrir" à votre programme. Par exemple, si vous exécutez un programme et entrez certains paramètres de configuration, vous pouvez enregistrer ces paramètres dans un fichier étagère et demander au programme de les charger lors de sa prochaine exécution.

>>> import shelve

>>> shelfFile = shelve.open('mydata')

>>> cats = ['Zophie', 'Pooka', 'Simon']

>>> shelfFile['cats'] = cats

>>> shelfFile.close()

>>> étagère d'importation

>>>shelfFile = shelve.open('mesdonnées')

>>> chats = ['Zophie', 'Pooka', 'Simon']

>>> shelfFile = shelve.open('mydata')

>>> type(shelfFile)

>>> shelfFile['cats'] ['Zophie', 'Pooka', 'Simon']

>>> shelfFile.close()

>>> ShelfFile['chats'] = chats

>>> shelfFile = shelve.open('mydata')

>>> list(shelfFile.keys())

['cats']

>>> list(shelfFile.values())

[['Zophie', 'Pooka', 'Simon']]

>>> shelfFile.close()

>>>étagèreFile.close()

En exécutant le code précédent sous Windows, vous verrez 3 nouveaux fichiers dans le répertoire de travail actuel : mydata.bak, mydata.dat et mydata.dir. Sous OS X, un seul fichier mydata.db est créé.

Ces fichiers binaires contiennent les données stockées dans l'étagère. Le format de ces binaires n'a pas d'importance, il vous suffit de savoir ce que fait le module shelve, pas comment il le fait. Ce module vous évite de vous soucier de sauvegarder les données de votre programme dans un fichier. Votre programme pourra ensuite utiliser le module shelve pour rouvrir ces fichiers et récupérer les données. Les valeurs des étagères ne doivent pas nécessairement être ouvertes en mode lecture ou écriture car elles peuvent être lues ou écrites une fois ouvertes.

>>> ShelfFile = shelve.open('mesdonnées')

>>> tapez(étagèreFichier)

>>> ShelfFile['chats'] ['Zophie', 'Pooka', 'Simon']

>>> import os

>>> os.makedirs('C:\delicious\walnut\waffles')

>>>étagèreFile.close()
Tout comme un dictionnaire, les valeurs d'étagère ont des méthodes clés() et valeurs(), qui renvoient une valeur de type liste des clés et des valeurs de l'étagère. Étant donné que ces méthodes renvoient des valeurs de type liste plutôt que de vraies listes, elles doivent être transmises à la fonction list() pour obtenir le formulaire de liste.
>>> ShelfFile = shelve.open('mesdonnées') >>>liste(shelfFile.keys()) ['chats'] >>>liste(shelfFile.values()) [['Zophie', 'Pooka', 'Simon']] >>>étagèreFile.close()
Le texte brut est utile lors de la création de fichiers si vous devez les lire dans un éditeur de texte comme Notepad ou TextEdit. Cependant, si vous souhaitez sauvegarder les données d'un programme Python, utilisez le module shelve. 10.2.2 Écrire plusieurs lignes La fonction write() n'enroulera pas automatiquement la ligne après le texte écrit, vous devez donc ajouter le caractère de nouvelle ligne n vous-même. 10.3 Fonctionnement du système d'exploitation 10.3.1 Utilisez os.makedirs() pour créer un nouveau dossier  Les programmes peuvent utiliser la fonction os.makedirs() pour créer de nouveaux dossiers (répertoires).
>>> importer le système d'exploitation >>> os.makedirs('C:\delicious\walnut\waffles')

Cela créera non seulement le dossier C:delicious, mais créera également le dossier Walnut sous C:delicious et le dossier Waffles dans C:deliciouswalnut. Autrement dit, os.makedirs() créera tous les dossiers intermédiaires nécessaires afin de garantir que les chemins d'accès complets existent.

10.3.2 module os.path

Le module os.path contient de nombreuses fonctions utiles liées aux noms de fichiers et aux chemins de fichiers.

 1. Afficher la taille du fichier et le contenu du dossier

  • Une fois que vous avez un moyen de gérer les chemins de fichiers, vous pouvez commencer à collecter des informations sur des fichiers et des dossiers spécifiques. Le module os.path fournit des fonctions permettant d'afficher le nombre d'octets d'un fichier ainsi que les fichiers et sous-dossiers d'un dossier donné.
  • L'appel de os.path.getsize(path) renverra le nombre d'octets du fichier dans le paramètre path.
  • L'appel de os.listdir(path) renverra une liste de chaînes de noms de fichiers contenant chaque fichier dans le paramètre path (notez que cette fonction est dans le module os, pas os.path).
  • Utilisez os.path.join() pour connecter le nom du dossier et le nom du fichier actuel.

 2. Vérifier la validité du chemin

  • Si le chemin que vous fournissez n'existe pas, de nombreuses fonctions Python planteront et signaleront une erreur. Le module os.path fournit des fonctions permettant de détecter si un chemin donné existe et s'il s'agit d'un fichier ou d'un dossier.
  • Si le fichier ou le dossier pointé par le paramètre path existe, l'appel de os.path.exists(path) renverra True, sinon il renverra False.
  • Si le paramètre path existe et est un fichier, l'appel de os.path.isfile(path) renverra True, sinon il renverra False.
  • Si le paramètre path existe et est un dossier, appeler os.path.isdir(path) renverra True, sinon il renverra False.

10.4 Fichiers organisationnels

10.4.1 module Shutil

Le module Shutil (ou outil Shell) contient des fonctions qui vous permettent de copier, déplacer, renommer et supprimer des fichiers dans des programmes Python. Pour utiliser les fonctions Shutil, vous devez d'abord importer Shutil.

10.4.1.1 Copier des fichiers et des dossiers

Le module Shutil fournit des fonctions pour copier des fichiers et des dossiers entiers.

 1. Appelez Shutil.copy(source, destination) pour copier le fichier du chemin source vers le dossier du chemin de destination (la source et la destination sont toutes deux des chaînes).

 2. Si la destination est un nom de fichier, il sera utilisé comme nouveau nom du fichier copié. Cette fonction renvoie une chaîne représentant le chemin d'accès au fichier en cours de copie.

>>> import shutil, os

>>> os.chdir('C:\')

>>> shutil.copy('C:\spam.txt','C:\delicious')

'C:\delicious\spam.txt'

>>> shutil.copy('eggs.txt', 'C:\delicious\eggs2.txt')

'C:\delicious\eggs2.txt'

>>> importer Shutil, OS

>>>os.chdir('C:\')

>>>shutil.copy('C:\spam.txt','C:\delicious')

'C:\delicious\spam.txt'

>>>shutil.copy('eggs.txt', 'C:\delicious\eggs2.txt')

'C:\delicious\eggs2.txt'

10.4.1.2 Déplacer et renommer des fichiers et des dossiers

Appelezshutil.move(source, destination) pour déplacer le dossier du chemin source vers le chemin de destination et renvoyer la chaîne du chemin absolu du nouvel emplacement.

Si la destination pointe vers un dossier, le fichier source sera déplacé vers la destination et le nom du fichier d'origine sera conservé. Exception 10.5

Python utilise des objets spéciaux appelés exceptions pour gérer les erreurs qui se produisent lors de l'exécution du programme.

Python crée une exception chaque fois qu'une erreur se produit.

S'il est écrit pour gérer les exceptions, le programme continuera, sinon le programme s'arrêtera et renverra un rétrolien contenant un rapport sur l'exception.

Les exceptions sont gérées à l'aide du

bloc de code try-sauf

. Effectuez l'opération spécifiée et dites à Python quoi faire. À l'aide du

def my_abs(x):

    if not isinstance(x, (int, float)):

        raise TypeError('bad operand type')

    if x >= 0:

        return x

    else:

        return -x

ValueError异常

 

bloc de code try-sauf , même si le programme rencontre une erreur, il continuera à s'exécuter et affichera un message d'erreur convivial écrit par vous pour informer l'utilisateur de ce qui ne va pas. 1.Exception ZeroDivisionError  Une exception se produit lorsque le diviseur est 0. 2.TypeError Seuls les paramètres de type entier et virgule flottante sont autorisés. La vérification du type de données peut être implémentée à l'aide de la fonction intégrée isinstance()
def mes_abs(x): sinon isinstance(x, (int, float)):           raise TypeError('mauvais type d'opérande') si x >= 0 : retourner x autre : retour -x ValueError

3. Enregistrer les erreurs

Le module de journalisation intégré de Python peut facilement enregistrer les informations sur les erreurs.

4. Lancez une erreur

Si vous souhaitez générer une erreur, vous pouvez d'abord définir une classe d'erreur selon vos besoins, sélectionner la relation d'héritage, puis utiliser l'instruction raise pour générer une instance d'erreur.

10.6 Stockage des données

Utilisez le module json pour stocker les données. Le format des données Json n'est pas spécifique à Python et peut être partagé avec des personnes utilisant d'autres langages de programmation. C'est un format léger, utile et facile à apprendre.

Le format JSON (JavaScript Object Notation) a été initialement développé pour JavaScript, mais est depuis devenu un format courant utilisé dans de nombreux langages.

Utilisez json.dump() et json.load()

json.dump() accepte deux paramètres réels, les données à stocker et l'objet fichier qui peut être utilisé pour stocker les données.

  1. Un programme pour stocker un ensemble de nombres json.dump()
  2. Programme pour lire les nombres en mémoire json.load()

10.6.2 Sauvegarde et lecture des données générées par l'utilisateur

json.dump et json.load sont utilisés ensemble pour stocker et charger des données respectivement.

10.6.3 Refactorisation

1. Le code fonctionne correctement, mais il peut être encore amélioré - divisez le code en une série de fonctions qui effectuent un travail spécifique. Ce processus est appelé reconstruction. La refactorisation rend le code plus clair, plus facile à comprendre et plus facile à étendre.

 2. Mettez l'essentiel de la logique dans une ou plusieurs fonctions.

10.6.4 Résumé

1. J'ai appris à lire des fichiers, à lire le fichier entier et à lire une ligne, à exploiter des fichiers, à ouvrir, en mode lecture, en mode écriture, en mode ajout, en mode lecture et écriture.

 2. Comment utiliser le bloc de code try-sauf-else pour la gestion des exceptions. Type d'exception. Manipulez les données, enregistrez et lisez les données, utilisez le module json, utilisez le dump et le chargement, apprenez à refactoriser le code.

10.7 Débogage

1. Affirmation

Partout où print() est utilisé pour faciliter la visualisation, l'assertion peut être utilisée à la place.

def foo(s):

    n = int(s)

    assert n != 0, 'n is zero!'

    return 10 / n

 

def main():

    foo('0')

déf foo(s) :

n = int(s)

affirme n != 0, 'n vaut zéro !'

retour 10/n def main() : foo('0')
La signification de assert est que l'expression n != 0 doit être vraie. Sinon, selon la logique de fonctionnement du programme, le code suivant sera définitivement erroné. Si l'assertion échoue, l'instruction assert elle-même générera une AssertionError.

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