Free Your Hands: Automated Documentation

Table of contents

Primer:

Application scenario:

source code:

Source code description:

The effect is as follows:


movefiletofolderbytype.py

Primer:

        For example, a person may store a large number of photo, video, and document files on a computer, which may be scattered in different folders and difficult to manage and find. The program can organize these files into different folders according to the file type, making these files more organized and easy to find.

In addition, the program can also be used to batch process files, such as converting all video files in a folder to a specific format, or reducing all picture files in a folder to a specific size, etc.

All in all, this program can help users manage and organize files in their computers, improving work efficiency and organization.

Application scenario:

  1. Organize personal files: Individuals store a large number of photos, videos, and document files on their computers, which may be scattered in different folders. This program can organize these files into different folders and classify them by file type , to facilitate management and search.
  2. 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.
  3. Data backup: back up important data to an external storage device, and store them according to file type, such as backing up photos to one folder, backing up document files to another folder, etc.
  4. Server file organization: For a server with a large number of files, this program can organize files into corresponding folders for easy management and search.
  5. Data Cleanup: Clean up unnecessary files on your computer, such as cleaning up temporary files in the download folder, cleaning up the trash, etc.
  6. 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 create a wxPython GUI interface, which contains two buttons and a text box. Click the "Select Folder" button to pop up a dialog box to select the folder to be organized, and click the "Organize Folder" button to start organizing the folder.

  • First, we created four folders: photos, documents, videos, shortcuts. If these folders do not exist, we create them using the os.makedirs() function.
  • Then, we iterate through all the files in the folder using the os.listdir() function. If the file is a file and not a folder, we get the extension of the file and move the file to the appropriate folder based on the extension. We use the shutil.move() function to move the file from its original location to its new location.
  • Finally, we use the wx.MessageBox() function to pop up a prompt box after sorting.

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:

Guess you like

Origin blog.csdn.net/winniezhang/article/details/130280114