Home  >  Article  >  Backend Development  >  How to implement an automated document organization tool based on Python

How to implement an automated document organization tool based on Python

王林
王林forward
2023-05-13 15:13:251424browse

Application Scenario

Personal file organization: Individuals store a large number of photos, videos and document files on their computers. These files may be scattered in different folders. Use this program to organize these files into in different folders and classified according to file types for easy management and search.

Batch file processing: All files in a folder need to be processed in batches, such as converting video files to a specific format, reducing image files to a specific size, etc.

Data backup: Back up important data to external storage devices and store them according to file types, such as backing up photos to one folder, backing up document files to another folder, etc.

Server file organization: For a server containing a large number of files, you can use this program to organize the files into corresponding folders for easy management and search.

Data Cleaning: Clean unnecessary files on your computer, such as cleaning temporary files in the download folder, cleaning the trash, etc.

Log processing: Organize specific types of log files into different folders for easy viewing and analysis.

Source code

import os
import shutil
import wx
 
class FileOrganizer(wx.Frame):
    def __init__(self, parent, title):
        super(FileOrganizer, self).__init__(parent, title=title, size=(500, 300))
 
        panel = wx.Panel(self)
        self.current_dir = os.getcwd()
 
        # 创建按钮用来选择文件夹
        select_folder_btn = wx.Button(panel, label="选择文件夹", pos=(10, 10))
        select_folder_btn.Bind(wx.EVT_BUTTON, self.on_select_folder)
 
        # 创建按钮用来开始整理文件夹
        organize_btn = wx.Button(panel, label="整理文件夹", pos=(10, 50))
        organize_btn.Bind(wx.EVT_BUTTON, self.on_organize)
 
        # 创建文本框显示当前文件夹路径
        self.dir_text = wx.StaticText(panel, label=self.current_dir, pos=(10, 100))
 
        self.Show()
 
    def on_select_folder(self, event):
        dlg = wx.DirDialog(self, "选择文件夹", style=wx.DD_DEFAULT_STYLE)
        if dlg.ShowModal() == wx.ID_OK:
            self.current_dir = dlg.GetPath()
            self.dir_text.SetLabel(self.current_dir)
        dlg.Destroy()
 
    def on_organize(self, event):
        # 创建文件夹
        photos_dir = os.path.join(self.current_dir, "photos")
        if not os.path.exists(photos_dir):
            os.makedirs(photos_dir)
 
        documents_dir = os.path.join(self.current_dir, "documents")
        if not os.path.exists(documents_dir):
            os.makedirs(documents_dir)
 
        videos_dir = os.path.join(self.current_dir, "videos")
        if not os.path.exists(videos_dir):
            os.makedirs(videos_dir)
 
        shortcuts_dir = os.path.join(self.current_dir, "shortcuts")
        if not os.path.exists(shortcuts_dir):
            os.makedirs(shortcuts_dir)
 
        # 遍历文件夹
        for filename in os.listdir(self.current_dir):
            filepath = os.path.join(self.current_dir, filename)
            if os.path.isfile(filepath):
                ext = os.path.splitext(filename)[1].lower()
                if ext in (".jpg", ".jpeg", ".png", ".gif"):
                    shutil.move(filepath, os.path.join(photos_dir, filename))
                elif ext in (".doc", ".docx", ".pdf", ".txt"):
                    shutil.move(filepath, os.path.join(documents_dir, filename))
                elif ext in (".mp4", ".avi", ".mov", ".wmv"):
                    shutil.move(filepath, os.path.join(videos_dir, filename))
                elif ext == ".lnk":
                    shutil.move(filepath, os.path.join(shortcuts_dir, filename))
 
        wx.MessageBox("文件夹整理完成!", "提示", wx.OK | wx.ICON_INFORMATION)
 
if __name__ == "__main__":
    app = wx.App()
    FileOrganizer(None, title="文件整理工具")
    app.MainLoop()

Source code description

In this code, we created a wxPython GUI interface, including two buttons and a text box. Click the "Select Folder" button to pop up a dialog box to select the folders that need to be organized. Click the "Organize Folders" button to start organizing the folders.

First, we created four folders: photos, documents, videos, shortcuts. If these folders do not exist, we create these folders using the os.makedirs() function.

Then, we use the os.listdir() function to iterate through all the files in the folder. If the file is a file rather than a folder, we get the extension of the file and move the file to the appropriate folder based on the extension. We use shutil.move() function to move the file from the original location to the new location.

Finally, we use the wx.MessageBox() function to pop up a prompt box after finishing the arrangement.

Please note that this code can only process files in the first-level directory. If you need to process files in subdirectories, you need to use a recursive function to achieve it.

The effect is as follows

How to implement an automated document organization tool based on Python

The above is the detailed content of How to implement an automated document organization tool based on Python. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete