Python Extra: utilisez le module os + shutil pour organiser les fichiers informatiques en un seul clic

Bonjour à tous, je m'appelle wangzirui32, aujourd'hui nous allons apprendre à utiliser le module os + shutil pour organiser les fichiers informatiques en un seul clic.
Commencer à apprendre!

Préface

Récemment, un dossier sur mon ordinateur est très "chaotique", j'ai donc décidé d'écrire un petit programme Python pour organiser des milliards de fichiers.
Ceci est mon dossier en désordre:
dossier
OK, commençons à coder!

1. Ecrire le module du module auxiliaire

Tout d'abord, nous devons écrire un module de finition auxiliaire, ouvrir un fichier Python et le nommer module.py.

1.1 Classe d'annuaire

Ouvrez module.py et entrez:

# 导入所需的模块
import os
import shutil

# 定义Directory类
class Directory():
    def __init__(self, directory_name, file_suffix):
    	# 参数:文件夹名 文件后缀名
        self.file_suffix = file_suffix
        self.directory_name = directory_name
        # 要保存的文件
        self.file_list = []

    def add_file(self, file_name):
    	# 获取文件后缀名 并判断是否在file_suffix列表中
        if file_name.split('.')[-1] in self.file_suffix:
        	# 如果有 则添加到file_list
            self.file_list.append(file_name)
            return True
        else:
            return False
            
	def save_files(self):
		# 这个方法用于保存已经添加的文件
		# 首先使用mkdir函数创建文件夹
        os.mkdir(path + "\\" + self.directory_name)
        for file in self.file_list:
        	# 再使用move函数一个一个移动文件
            shutil.move(path + "\\" + file, path + "\\" + self.directory_name)

La classe Directory est définie pour faciliter la gestion unifiée des fichiers. Tout d'abord, obtenez les paramètres réels: le nom du dossier à enregistrer et le suffixe du fichier (sous forme de liste). Nom du suffixe de fichier Ce paramètre permet de déterminer quels fichiers avec le nom de suffixe répondent aux exigences d'enregistrement.

add_file (fille_name) transmet un nom de fichier et juge s'il faut le stocker en fonction du suffixe de ce fichier. S'il remplit les conditions, ajoutez-le à la liste de stockage et renvoyez True, sinon renvoyez False.

save_files () est utilisé pour enregistrer les fichiers ajoutés à la liste_fichiers. Tout d'abord, créez automatiquement un dossier nommé comme attribut nom_répertoire de cette classe, puis parcourez la liste_fichiers et utilisez la fonction shutil.move pour déplacer les fichiers vers le dossier créé.

1.2 Répertoires

Pour une gestion plus pratique, j'ai ajouté la classe Directory à module.py pour faciliter la gestion de chaque classe Directory:

class Directories():
    def __init__(self, *directories):
    	# 传入需要管理的Directory类 参数数量无限制
        self.directories = directories

	# 传入文件名
    def add_file(self, file_name):
        for directory in self.directories:
        	# 挨个执行Directory类中的add_file函数
        	# 直至符合存储条件
            if directory.add_file(file_name):
                break
	# 遍历每个Directory类
	# 并且执行Directory类的save_files函数保存
    def save_files(self):
        for directory in self.directories:
            directory.save_files()

2. Écrivez le fichier principal du projet demo.py

Tout d'abord, nous déterminons quelles classes d'annuaire définir. J'ai défini 5 variables dans demo.py en fonction du suffixe du fichier dans le dossier:

# 导入
import os
from module import Directory, Directories

# 先把路径设置为你需要整理的文件夹的路径
path = r"C:\Python\Python整理文件\我的文件夹"

# Tips:这里后缀名只写了一个,你还可以根据需要添加多个,如图片文件['png', 'jpg']等
pic = Directory("图片", ['png'])
word = Directory("word文档", ['doc'])
xls = Directory('表格文件', ['xls'])
csv = Directory("csv文件", ['csv'])
txt = Directory("文本文件", ['txt'])

Ensuite, nous obtenons tous les noms de fichiers dans le dossier:

files_name = os.listdir(path)

Définissez ensuite une classe d'annuaire gérée et transmettez toutes les classes et chemins d'annuaire à gérer:

directories = Directories(pic, word, xls, csv, txt)

Enfin, utilisez une boucle for pour parcourir le nom du fichier et appelez la fonction add_file de la classe Directories:

for file_name in files_name:
    directories.add_file(file_name)

A la fin du programme, enregistrez:

directories.save_files()

Code complet:

# 注意:module模块需要编写
import os
from module import Directory, Directories

path = r"C:\Python\Python整理文件\我的文件夹"

files_name = os.listdir(path)

pic = Directory("图片", ['png'])
word = Directory("word文档", ['doc'])
xls = Directory('表格文件', ['xls'])
csv = Directory("csv文件", ['csv'])
txt = Directory("文本文件", ['txt'])

directories = Directories(pic, word, xls, csv, txt)

for file_name in files_name:
    directories.add_file(file_name)
directories.save_files()

3. Afficher les résultats

Exécutez le code, mon dossier est organisé comme ceci:
Après avoir fini

Écrivez à la fin

Ici pour expliquer, écrire si compliqué c'est faciliter la modification du programme, si je veux classer le fichier PDF, je peux l'ajouter directement au code de demo.py:

# 省去一些代码
csv = Directory("csv文件", ['csv'])
# 在csv后面添加新的代码
pdf = Directory("PDF文件", ['pdf'])

Ensuite, modifiez les paramètres passés aux répertoires:

directories = Directories(pic, word, xls, csv, txt, pdf) # 新加入pdf

Cela peut ajouter la fonction de PDF catégorisé au programme. Est-il très léger et facile à modifier?


Très bien, le cours d’aujourd’hui est terminé, si vous voulez, donnez-moi un coup de pouce et suivez-moi, au revoir!

Je suppose que tu aimes

Origine blog.csdn.net/wangzirui32/article/details/113881614
conseillé
Classement