Maîtrisez les opérations sur les fichiers Python : exploration complète, du niveau de base au niveau avancé

Dans ce blog, nous discuterons des opérations de fichiers en Python de manière complète et approfondie. Les opérations sur les fichiers font partie intégrante de la programmation Python, qui comprend diverses opérations telles que l'ouverture, la lecture, l'écriture et la fermeture de fichiers. Nous expliquerons des opérations de base sur les fichiers aux compétences avancées en traitement de fichiers, et comment utiliser Python pour les opérations sur les fichiers avec élégance. Dans chaque partie, nous partagerons des utilisations uniques, avec des exemples de code spécifiques et des résultats de sortie. À la fin de l'article, nous partagerons également quelques astuces de manipulation de fichiers peu connues mais très utiles.

Vidéo de combat réel du projet de la station B : Tests automatisés Python : 60 projets de combat réels, vous apprendre étape par étape

Opérations de base sur les fichiers : ouverture, lecture, écriture et fermeture de fichiers

Python utilise une fonction intégrée open()pour ouvrir un fichier, qui renvoie un objet fichier, et les modes communs sont les suivants : 'r' signifie lire, 'w' signifie écrire (le fichier d'origine sera d'abord effacé), 'a' signifie ajouter, 'b' indique le mode binaire. En particulier, nous pouvons utiliser withdes mots-clés pour que le dossier soit automatiquement fermé lorsque nous aurons terminé.

# 以读取模式打开一个文件
with open('file.txt', 'r') as file:
    content = file.read()
print(content)

Lorsque vous exécutez ce code, hypothétiquement file.txt, Hello, Python!vous verrez le résultat suivant :

Hello, Python!

Lecture de fichiers : contrôle fin

Au lieu de lire l'intégralité du fichier en une seule fois, nous pouvons également lire le fichier en unités plus petites. Ceci est très utile lorsqu'il s'agit de fichiers volumineux pour contrôler efficacement l'utilisation de la mémoire.

with open('file.txt', 'r') as file:
    while True:
        line = file.readline()
        if not line:
            break
        print(line, end='')

Ce code lit file.txtle contenu du fichier ligne par ligne et l'imprime. où , end=''est d'empêcher printla fonction d'insérer une nouvelle ligne après chaque impression, puisque chaque ligne lue à partir du fichier a déjà une nouvelle ligne.

Écriture de fichier : ajout et écrasement de contenu

Nous utilisons le mode écriture ('w') ou le mode ajout ('a') pour écrire dans le fichier. \nVoici une petite astuce : si votre programme doit écrire fréquemment dans le fichier, il est plus efficace d'utiliser une nouvelle ligne lors de l'écriture que d'utiliser write()une fonction, puis d'utiliser write('\n')une fonction pour insérer une nouvelle ligne.

with open('file.txt', 'a') as file:
    file.write('Hello, Python!\n')

Ce code file.txtajoutera une ligne à la fin du fichier Hello, Python!.

Gestion de fichiers plus avancée : oset shutilmodules

osLes modules et modules Python shutilnous fournissent des fonctions de manipulation de fichiers plus avancées, telles que renommer des fichiers, supprimer des fichiers, créer

répertoires, copier des fichiers, etc.

import os
import shutil

# 创建一个新的目录
os.mkdir('new_folder')

# 重命名文件
os.rename('old.txt', 'new.txt')

# 复制文件
shutil.copy2('src.txt', 'dst.txt')

# 删除文件
os.remove('file_to_delete.txt')

L'exécution de ce code effectuera les opérations de fichier ci-dessus dans l'ordre.

Encodage de fichiers : gérer les fichiers avec différents formats d'encodage

Lorsque nous traitons des fichiers, nous pouvons rencontrer divers formats d'encodage, tels que UTF-8, ASCII, ISO-8859-1, etc. La fonction de Python open()nous permet encodingde spécifier la méthode d'encodage du fichier via des paramètres.

with open('file.txt', 'r', encoding='utf-8') as file:
    content = file.read()
print(content)

Si vous essayez de lire un fichier texte qui contient des caractères non-ASCII, mais que vous ne fournissez pas le paramètre d'encodage correct, Python peut lancer UnicodeDecodeError. Dans ce cas, vous devez connaître le format d'encodage correct du fichier afin de lire correctement le fichier.

# 尝试读取一个包含非ASCII字符的文件,但没有指定正确的编码格式
try:
    with open('file.txt', 'r') as file:
        content = file.read()
except UnicodeDecodeError:
    print("UnicodeDecodeError occurred!")

Ce code intercepte UnicodeDecodeErroret imprime un message d'erreur.

Gestion des exceptions de fichiers : assurer la robustesse du code

Dans l'opération de fichier, nous pouvons rencontrer diverses conditions anormales, telles que le fichier n'existe pas, il n'y a pas d'autorisation de lecture/écriture, etc. Nous pouvons utiliser le mécanisme de gestion des exceptions de Python pour intercepter ces exceptions et les traiter en conséquence.

try:
    with open('nonexistent_file.txt', 'r') as file:
        content = file.read()
except FileNotFoundError:
    print('File does not exist!')
except PermissionError:
    print('No permission to read the file!')

Ce code capture FileNotFoundErroret PermissionError, et imprime le message d'erreur correspondant, respectivement.

pickleSérialisation et désérialisation d'objets à l'aide de

Les modules de Python picklefournissent des fonctions pour convertir des objets dans un format qui peut être stocké dans un fichier ou transmis sur un réseau (un processus appelé sérialisation), et reconstruire des objets à partir de ce format (un processus appelé désérialisation). C'est un moyen très pratique d'enregistrer et de charger des objets Python.

import pickle

data = {
    'name': 'John',
    'age': 30,
    'pets': ['cat', 'dog']
}

# 序列化并保存到文件
with open('data.pkl', 'wb') as file:
    pickle.dump(data, file)

# 从文件加载并反序列化
with open('data.pkl', 'rb') as file:
    loaded_data = pickle.load(file)

print(loaded_data)

Exécutez ce code et vous verrez le résultat suivant :

{'name': 'John', 'age': 30, 'pets': ['cat', 'dog']}

Il s'agit de l' dataobjet dictionnaire d'origine.

gestion des chemins d'accès aux fichiers

Lorsqu'ils traitent des chemins de fichiers, os.pathles modules de Python fournissent une série de fonctions pour analyser, construire et modifier les chemins de fichiers. Ces fonctions sont multiplateformes, vous pouvez donc les utiliser en toute sécurité, que votre programme s'exécute sous Windows, macOS ou Linux.

import os

# 获取文件的绝对路径


abs_path = os.path.abspath('file.txt')
print(f'Absolute path: {abs_path}')

# 获取文件所在的目录
dir_name = os.path.dirname(abs_path)
print(f'Directory: {dir_name}')

# 获取文件的基本名和扩展名
base_name = os.path.basename(abs_path)
print(f'Base name: {base_name}')
root, ext = os.path.splitext(base_name)
print(f'Root: {root}, Extension: {ext}')

En supposant qu'il file.txtse trouve /home/user/documents/dans un répertoire, l'exécution de ce code affichera :

Absolute path: /home/user/documents/file.txt
Directory: /home/user/documents
Base name: file.txt
Root: file, Extension: .txt

Encore une chose : parcourir et rechercher des fichiers

Le module de Python osfournit une os.walk()fonction, qui est un outil facile à utiliser mais puissant pour générer des noms de fichiers dans des arborescences de répertoires. Combiné avec fnmatchdes modules, nous pouvons implémenter des recherches de correspondance de modèles pour les fichiers.

import os
import fnmatch

def find(pattern, path):
    result = []
    for root, dirs, files in os.walk(path):
        for name in fnmatch.filter(files, pattern):
            result.append(os.path.join(root, name))
    return result

# 查找当前目录及其所有子目录中的所有.txt文件
print(find('*.txt', '.'))

file1.txtEn supposant qu'il y ait trois fichiers ,  file2.txtdans le répertoire courant et ses sous-répertoires sub/file3.txt, l'exécution de ce code affichera :

['./file1.txt', './file2.txt', './sub/file3.txt']

Nous espérons que vous pourrez acquérir diverses compétences de manipulation de fichiers Python à partir de ce blog et que vous pourrez jouer un rôle dans votre parcours de programmation Python. Si vous avez des questions ou des idées, veuillez laisser un message pour communiquer.


Merci à tous ceux qui ont lu attentivement mon article, même si ce n'est pas une chose très précieuse, si vous pouvez l'utiliser, vous pouvez l'emporter :

 Ces matériaux devraient être l'entrepôt de préparation le plus complet et le plus complet pour les amis [testeurs de logiciels]. Cet entrepôt a également accompagné des dizaines de milliers d'ingénieurs de test tout au long du voyage le plus difficile. J'espère qu'il pourra vous aider aussi !

Méthode d'acquisition d'informations :

Je suppose que tu aimes

Origine blog.csdn.net/qq_56271699/article/details/131207859
conseillé
Classement