Maison  >  Article  >  développement back-end  >  C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

WBOY
WBOYavant
2023-04-14 22:58:081693parcourir

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

Une pensée soudaine, lorsque vous branchez l'USB, pouvez-vous exécuter automatiquement le programme sur l'USB. Après vérification, j'ai constaté que cela n'est possible que sous Windows. Vous pouvez également rechercher les détails (recherche par mot-clé usb autorun). Cependant, si je souhaite, par exemple, lorsqu'une clé USB est branchée, les fichiers importants de la clé USB seront automatiquement copiés sur le serveur local ou téléchargés sur un serveur en arrière-plan sans que personne ne s'en aperçoive, une assistance logicielle spéciale est alors nécessaire.

Alors je me suis dit : pourrais-je écrire un programme en python et le laisser s'exécuter en arrière-plan. Chaque fois qu'une clé USB est insérée, les fichiers importants qu'elle contient seront automatiquement copiés.

Comment juger si le disque U est inséré ?

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

Nous ouvrons d'abord le terminal de l'ordinateur et entrons dans le répertoire /Volumes. À ce moment, insérez le disque U et vous constaterez qu'il est monté sous celui-ci. répertoire, c'est-à-dire que nous n'avons besoin d'analyser ce répertoire qu'à une heure fixe. Lorsqu'un nouveau dossier apparaît dans ce répertoire, il est probable qu'une clé USB ait été insérée.

Ma conception est comme ceci, utilisez la fonction time.sleep(3) pour maintenir le programme en cours d'exécution et vérifiez le répertoire /Volumes/ toutes les trois secondes. S'il y a des dossiers supplémentaires, copiez-les dans un autre dossier.

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

Comme le titre l'indique, nous n'avons en réalité utilisé que 10 lignes (en fait 11 lignes, pour composer :) pour compléter ce "virus". Nous pouvons constater que les répertoires de la clé USB sont tous placés dans le répertoire personnel une demi-minute après l'insertion.

Comment copier sélectivement des fichiers ?

Nous venons d'écrire un script très simple pour tester la faisabilité de cette idée, mais il reste encore des problèmes. La raison pour laquelle nous avons pu copier rapidement tous les fichiers de la clé USB était qu'il n'y avait que deux ou trois fichiers dans la clé USB et que leur taille ne dépassait pas 15 Mo. S'il y a de nombreux films, musiques et fichiers dont nous n'avons pas besoin sur le disque USB cible, notre programme devrait pouvoir les ignorer et sélectionner uniquement certains fichiers importants tels que les fichiers .docx tels que les fichiers .ppt, ou copier uniquement les fichiers récemment fichiers modifiés ou exclure tous les fichiers de taille supérieure à 5 Mo. Pouvons-nous le faire en python ? Bien sûr !

Donnons un exemple.

J'ai créé le dossier testwalk dans un certain répertoire. Il y a trois fichiers file123.txt et trois dossiers dossier123. Il y a les fichiers file4.txt et dossier4 dans le dossier1

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

Maintenant, testons-le.

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

root stocke l'emplacement actuel. Il utilisera tous les dossiers sous ./testwalk/ comme répertoire racine et effectuera une recherche vers le bas.

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

Afficher les répertoires individuellement

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

Afficher les fichiers individuellement

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

D'accord, maintenant nous devons récurer le dossier USB, trouver tous les fichiers, vérifier la taille, si elle est inférieure à, comme 3M, copiez-le simplement à la maison, jetez-le s'il est supérieur à la valeur.

module shutil

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

Prenons maintenant le dossier comme exemple Si vous souhaitez copier le fichier1.txt dans le dossier2 :

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

Il existe de nombreux outils dans Shutil que je ne ferai pas. entrez dans les détails ici.

os.path.getsize() détermine la taille

os.path.getsize (nom du fichier) renvoie une valeur en octets S'il est utilisé pour vérifier la taille du fichier, nous devons écrire manuellement une fonction dans It's. converti en un formulaire facile à lire.

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

Ici, il suffit de sélectionner la taille du fichier inférieure à 3M, 3M = 3 * 1024kB = 3 * 1024*1024byte

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

Combiné avecshutil.copy2, nous pouvons copier le fichier de la taille sélectionnée dans notre dossier cible

Comment spécifier le type de fichier

Ici, nous avons besoin d'expressions régulières pour nous aider.

Il y a beaucoup de contenu sur les expressions régulières, et un chapitre entier y est consacré dans "Python Core Programming", nous n'entrerons donc pas dans les détails.

Comme suit, nous autorisons la copie du suffixe de fichier spécifié et de la taille de fichier spécifiée dans notre fichier cible :

N'oubliez pas d'importer re

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

Utilisez des expressions régulières plus complexes pour mieux spécifier le fichier tapez

Filtrer les fichiers en fonction de l'heure de modification

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

À ce moment-là, j'ai créé un fichier appelé newfile dans le répertoire

C'est effrayant d'y penser, branchez la clé USB et commencez à exécuter le code Python

En bref, filtrer l'heure de modification de chaque fichier ne peut copier que le plus récent ceux ou fichiers qui ont été modifiés ou ajoutés au cours d’une période spécifique, cette fonction est utile dans des situations spécifiques.

Résumé

En fait, il ne s'agit que d'un petit programme, pas d'un code malveillant sophistiqué. Je voudrais utiliser cet exemple pour démontrer la puissante capacité de Python à traiter des fichiers et susciter l'enthousiasme de chacun pour l'apprentissage. Les implémentations ci-dessus sont toutes basées sur Macos. Linux devrait également fonctionner avec de légères modifications. Les techniques ci-dessus sont uniquement destinées à l’apprentissage et ne doivent pas être utilisées pour d’autres activités.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer