Python

module de fermeture en Python

module de fermeture en Python
La gestion des fichiers et la gestion des objets de fichiers sont considérées comme l'une des tâches les plus délicates dans tous les langages de programmation. Certains langages de programmation nous fournissent des outils qui éliminent les parties difficiles de la gestion des fichiers avec des fonctions et des interfaces faciles à utiliser. C'est exactement ce que Python silence le module fait aussi bien.

Silence Python

Le module Python Shutil permet à un développeur d'utiliser des objets de fichier très facilement et sans entrer dans les détails de la façon dont les choses fonctionnent sous les couvertures. Ce module fait abstraction de la sémantique de bas niveau de la création et de la gestion des objets de fichier, en les nettoyant une fois leur utilisation terminée et nous permet de nous concentrer sur la logique métier de l'application. Nous allons voir de nombreux exemples ici, commençons.

Exemples avec le module de fermeture Python

Nous étudierons divers exemples démontrant l'utilisation de Python silence module ici.

Copier un fichier

Avec le copier un fichier() fonction dans silence module, nous pouvons faire une copie exacte d'un fichier existant n'importe où sur la machine. Examinons un exemple de programme pour montrer comment cela peut être fait :

importer le système d'exploitation
Importer un arrêt
répertoire_fichier = './Des dossiers'
print('Fichiers avant :', os.listdir (fichier_répertoire))
silence.copier un fichier('./Fichiers/bonjour.SMS', './Fichiers/hello_again.SMS')
print('Fichiers après :', os.listdir (fichier_répertoire))

Nous venons de copier un fichier qui existe dans le répertoire donné pour cloner le fichier dans le même répertoire. Voici ce que nous obtenons avec cette commande :

Copie du fichier Python

La bonne chose à propos de cette fonction est que la fonction mentionnée prend également en entrée le nom du nouveau fichier à créer.

Copie de fichiers dans un autre répertoire

Il est possible de copier un fichier dans un nouveau répertoire avec le Shutil's copie() une fonction. Regardons-le en action :

importer le système d'exploitation
Importer un arrêt
print('Créer un nouveau répertoire.')
système d'exploitation.mkdir('LinuxHint')
print('Fichiers avant : ', os.listdir('LinuxHint'))
silence.copie('./Fichiers/bonjour.txt', 'LinuxHint')
print('Fichiers après : ', os.listdir('LinuxHint'))

Voyons le résultat de cette commande :

Copier le fichier dans un nouveau répertoire

Notez que lorsqu'un fichier est copié à l'aide du copie() une fonction, les autorisations pour le fichier sont également clonées mais les métadonnées du fichier ne sont pas copiées. Cela signifie que lorsque vous vérifiez quand ce fichier a été créé, il affichera la nouvelle heure à laquelle vous avez exécuté ce script.

Copier un fichier avec des métadonnées

Dans la dernière section, nous avons vu comment faire une copie du fichier. Que faire si vous voulez faire un clone exact d'un fichier qui implique également le clonage de ses métadonnées comme lorsque le fichier a été créé, etc. C'est possible aussi mais ça peut ne pas fonctionner sur un système basé sur POSIX. Regardons un exemple sur la façon dont cela peut être fait:

importer le système d'exploitation
Importer un arrêt
heure d'importation
nouveau_répertoire = 'LinuxHint'
fichier_src = './Fichiers/bonjour.SMS'
fichier_dest = './LinuxHint/bonjour.SMS'
def file_metadata(fichier):
stat_info = os.statistique(fichier)
print(' Mode :', oct(stat_info.st_mode))
print(' Créé :', heure.ctime(stat_info.st_ctime))
print(' Accédé :', heure.ctime(stat_info.st_atime))
print(' Modifié :', heure.ctime(stat_info.st_mtime))
système d'exploitation.mkdir(nouveau_répertoire)
print('Métadonnées pour le fichier source :')
file_metadata(src_file)
silence.copy2(fichier_src, nouveau_répertoire)
print('Métadonnées pour le fichier de destination :')
file_metadata(dest_file)

Voici ce que nous obtenons avec cette commande lorsque nous l'exécutons sur un système basé sur POSIX (les métadonnées ne sont pas complètement clonées) :

Copier le fichier avec les métadonnées

Sur les systèmes non basés sur POSIX, même l'heure de création et d'accès aurait correspondu exactement.

Clonage du répertoire complet

Dans la dernière section, nous avons vu comment faire une copie du fichier. Ici, nous allons voir comment on peut cloner un répertoire complet de manière récursive. Cela signifie que si un autre répertoire existe dans le répertoire que nous voulons cloner, ceux-ci seront également clonés.

importer pprint
Importer un arrêt
importer le système d'exploitation
src_directory = './Des dossiers'
répertoire_dest = './LinuxHint'
silence.copytree(src_directory, dest_directory)
print('Contenu de la source :')
pprint.pprint(os.listdir(src_directory))
print('Contenu de la destination :')
pprint.pprint(os.listdir(dest_directory))

Voyons le résultat de cette commande :

Dupliquer un répertoire

Notez que le répertoire que nous passons à copytree() fonctionne comme le répertoire de destination ne doit pas exister avant d'exécuter ce programme.

Suppression d'un répertoire

La suppression d'un répertoire est très simple avec le rmtree() fonction dans le module. Voyons cette fonction en action ici :

importer pprint
Importer un arrêt
importer le système d'exploitation
delete_directory = 'LinuxHint'
répertoire_actuel = '.'
print('Contenu avant suppression :')
pprint.pprint(os.listdir (répertoire_actuel))
silence.rmtree(supprimer_répertoire)
print('Contenu après suppression :')
pprint.pprint(os.listdir (répertoire_actuel))

Après avoir exécuté le script, LinuxHint le répertoire est supprimé avec le contenu. Voici ce que nous obtenons avec cette commande :

Supprimer le répertoire

Recherche de fichiers

Si vous voulez trouver un fichier qui est présent sur la variable PATH sur votre machine, nous pouvons utiliser le lequel() fonction pour trouver ce fichier par nom. Regardons un exemple de démonstration pour cette fonction :

Importer un arrêt
imprimer(shutil.qui('bsondump'))
imprimer(shutil.qui('aucun-fichier-trouvé'))

Voici ce que nous obtenons avec cette commande :

Rechercher un fichier sur PATH

Surveillance de l'espace du système de fichiers

Avec le module Shutil, nous avons une fonction disk_usage() grâce à laquelle nous pouvons également obtenir des informations sur l'espace disque de notre machine. Regardons un exemple qui montre ces données d'une manière lisible par l'homme :

Importer un arrêt
total_b, used_b, free_b = Shutil.utilisation du disque('.')
Go = 10 ** 9 # Go == gigaoctet
print('Total : :6.2f Go'.format(total_b / go))
print('Utilisé : :6.2f Go'.format(used_b / go))
print('Gratuit : :6.2f Go'.format(free_b / go))

Voici ce que nous obtenons avec cette commande :

Recherche d'espace dans le système de fichiers

Répertoires d'archivage

Comme dernier exemple, nous verrons comment archiver un module de fermeture de répertoire make_archive() une fonction. Regardons l'exemple de programme :

Importer un arrêt
importer le système d'exploitation
répertoire_archive = \
système d'exploitation.chemin.expanduser(os.chemin.join('destination-directory-path', 'linuxhint'))
root_dir = os.chemin.expanduser(os.chemin.rejoindre('~', '.chut'))
silence.make_archive(archive_directory, 'gztar', root_dir)

Voici ce que nous obtenons avec cette commande :

Répertoire d'archivage

Si vous désarchivez le fichier TAR et regardez, il contiendra tous les .ssh fichiers de répertoire qu'il contient.

Conclusion

Dans cette leçon, nous avons vu comment gérer facilement des objets de fichier avec des opérations de fichier de haut niveau avec silence module en Python. Opérations telles que copier le contenu d'un fichier, créer une nouvelle copie d'un fichier, etc. avait l'air facile avec ce module.

Comment modifier les paramètres de la souris et du pavé tactile à l'aide de Xinput sous Linux
La plupart des distributions Linux sont livrées avec la bibliothèque "libinput" par défaut pour gérer les événements d'entrée sur un système. Il peut ...
Remappez les boutons de votre souris différemment pour différents logiciels avec X-Mouse Button Control
Peut-être que vous avez besoin d'un outil qui pourrait faire changer le contrôle de votre souris avec chaque application que vous utilisez. Si tel est...
Examen de la souris sans fil Microsoft Sculpt Touch
J'ai lu récemment sur le Microsoft Sculpt Touch souris sans fil et j'ai décidé de l'acheter. Après l'avoir utilisé pendant un certain temps, j'ai déci...