• python自动化办公之文件整理脚本详解


          


    今天讲解文件整理脚本的实现过程。这是一个很有用的技能,可以帮助你管理你的电脑上的各种文件。需求如下:

    586fb40f32024016a1f0d59f52c717b8.gif

    • 需求内容:给定一个打算整理的文件夹目录,这个脚本可以将该目录下的所有文件都揪出来,并且根据后缀名归类到不同的文件夹里。

    • python能力:使用python的内置模块os和shutil来操作文件和目录,使用glob模块来匹配文件名,使用with语句来打开和关闭文件。

    • 实现步骤:

      • 导入需要的模块

      • 定义要整理的目录和要创建的子目录

      • 遍历目录下的所有文件,获取文件名和后缀名

      • 根据后缀名判断文件属于哪个子目录,如果不存在则创建

      • 使用shutil模块的move函数将文件移动到对应的子目录

      • 打印完成信息

    教程面对的是小白级别的读者,所以我会尽量用简单明了的语言来解释每一行代码的作用,并且给出完整的代码示例。我希望你能跟着我一起学习,并且在自己的电脑上运行和测试这个脚本。

    导入python的内置模块

    首先,我们需要导入一些python的内置模块,它们可以帮助我们操作文件和目录。os模块提供了一些基本的文件系统功能,比如获取文件路径,创建和删除目录等。shutil模块提供了一些高级的文件操作功能,比如复制和移动文件等。glob模块可以让我们用通配符来匹配文件名,比如*.txt可以匹配所有后缀名为txt的文件。with语句可以让我们方便地打开和关闭文件,不用担心忘记关闭或者出现异常。下面是导入模块的代码:

    1. # 导入需要的模块
    2. import os
    3. import shutil
    4. import glob

    定义要整理的目录和要创建的子目录

    接下来,我们需要定义要整理的目录和要创建的子目录。我们假设要整理的目录是D:\test,里面有各种类型的文件,比如文本文件,图片文件,音频文件等。我们想要把这些文件按照后缀名归类到不同的子目录里,比如txt文件放到D:\test\txt,jpg文件放到D:\test\jpg,mp3文件放到D:\test\mp3等。我们可以用一个字典来存储这些子目录的信息,键是后缀名,值是对应的子目录路径。下面是定义目录的代码:

    1. # 定义要整理的目录和要创建的子目录
    2. source_dir = "D:\\test" # 要整理的目录
    3. sub_dirs = { # 子目录信息
    4.     ".txt""D:\\test\\txt",
    5.     ".jpg""D:\\test\\jpg",
    6.     ".mp3""D:\\test\\mp3"
    7. }

    遍历目录下的所有文件,获取文件名和后缀名

    然后,我们需要遍历要整理的目录下的所有文件,获取文件名和后缀名。我们可以用os模块的listdir函数来获取目录下的所有文件和子目录,然后用os模块的path.splitext函数来分割文件名和后缀名。我们还需要判断是否是文件,因为listdir函数会返回子目录,我们不需要处理它们。我们可以用os模块的path.isfile函数来判断是否是文件。下面是遍历目录的代码:

    1. # 遍历目录下的所有文件,获取文件名和后缀名
    2. for item in os.listdir(source_dir): # 遍历目录
    3.     if os.path.isfile(os.path.join(source_dir, item)): # 判断是否是文件
    4.         file_name, file_ext = os.path.splitext(item) # 分割文件名和后缀名
    5.         print(file_name, file_ext) # 打印文件名和后缀名

    根据后缀名判断文件属于哪个子目录

    接着,我们需要根据后缀名判断文件属于哪个子目录,如果不存在则创建。我们可以用字典的get方法来根据键获取值,如果键不存在则返回None。我们可以用os模块的path.exists函数来判断子目录是否存在,如果不存在则用os模块的makedirs函数来创建。下面是判断和创建子目录的代码:

    1. # 根据后缀名判断文件属于哪个子目录,如果不存在则创建
    2.         sub_dir = sub_dirs.get(file_ext) # 根据后缀名获取子目录路径
    3.         if sub_dir: # 如果子目录路径存在
    4.             if not os.path.exists(sub_dir): # 如果子目录不存在
    5.                 os.makedirs(sub_dir) # 创建子目录
    6.                 print(f"Created {sub_dir}"# 打印创建信息

    将文件移动到对应的子目录

    接下来,我们需要使用shutil模块的move函数将文件移动到对应的子目录。我们需要提供源文件路径和目标文件路径作为参数。我们可以用os模块的path.join函数来拼接路径。下面是移动文件的代码:

    1. # 使用shutil模块的move函数将文件移动到对应的子目录
    2.             source_file = os.path.join(source_dir, item) # 源文件路径
    3.             target_file = os.path.join(sub_dir, item) # 目标文件路径
    4.             shutil.move(source_file, target_file) # 移动文件
    5.             print(f"Moved {source_file} to {target_file}") # 打印移动信息

    打印完成信息

    最后,我们需要打印完成信息,告诉用户整理工作已经完成。下面是打印完成信息的代码:

    1. # 打印完成信息
    2. print("Done!")

    这样,我们就完成了一个简单的文件整理脚本。完整的代码如下:

    1. # 导入需要的模块
    2. import os
    3. import shutil
    4. import glob
    5. # 定义要整理的目录和要创建的子目录
    6. source_dir = "D:\\test" # 要整理的目录
    7. sub_dirs = { # 子目录信息
    8.     ".txt""D:\\test\\txt",
    9.     ".jpg""D:\\test\\jpg",
    10.     ".mp3""D:\\test\\mp3"
    11. }
    12. # 遍历目录下的所有文件,获取文件名和后缀名
    13. for item in os.listdir(source_dir): # 遍历目录
    14.     if os.path.isfile(os.path.join(source_dir, item)): # 判断是否是文件
    15.         file_name, file_ext = os.path.splitext(item) # 分割文件名和后缀名
    16.         print(file_name, file_ext) # 打印文件名和后缀名
    17.         # 根据后缀名判断文件属于哪个子目录,如果不存在则创建
    18.         sub_dir = sub_dirs.get(file_ext) # 根据后缀名获取子目录路径
    19.         if sub_dir: # 如果子目录路径存在
    20.             if not os.path.exists(sub_dir): # 如果子目录不存在
    21.                 os.makedirs(sub_dir) # 创建子目录
    22.                 print(f"Created {sub_dir}"# 打印创建信息
    23.             # 使用shutil模块的move函数将文件移动到对应的子目录
    24.             source_file = os.path.join(source_dir, item) # 源文件路径
    25.             target_file = os.path.join(sub_dir, item) # 目标文件路径
    26.             shutil.move(source_file, target_file) # 移动文件
    27.             print(f"Moved {source_file} to {target_file}"# 打印移动信息
    28. # 打印完成信息
    29. print("Done!")

    如果你在自己的电脑上运行这个脚本,你会看到类似下面的输出:

    1. test1 .txt
    2. test2 .jpg
    3. test3 .mp3
    4. Created D:\test\txt
    5. Moved D:\test\test1.txt to D:\test\txt\test1.txt
    6. Created D:\test\jpg
    7. Moved D:\test\test2.jpg to D:\test\jpg\test2.jpg
    8. Created D:\test\mp3
    9. Moved D:\test\test3.mp3 to D:\test\mp3\test3.mp3
    10. Done!

    这就是python自动化办公,讲解文件整理脚本的实现过程。希望你能学到一些有用的知识,并且在实践中提高你的python能力。如果你有任何问题或建议,欢迎留言给我。谢谢你的阅读和关注!😊

  • 相关阅读:
    1.2 消息队列(4-6)
    使用Python的Turtle库绘制一个心形图像(含详细Python代码与注释)
    如何设置CUDA Kernel中的grid_size和block_size?
    设计一个32*8的sram,长宽比接近1:1,求具体讲一下原理
    Python学习之CSDN21天学习挑战赛计划之14
    【TypeScript】使用CRA创建支持TS的React项目(从踩坑到放弃)
    6、Maven的依赖
    Java 8的菱形继承冲突解决之道
    深度学习第四课
    JMeter 性能测试基本过程及示例
  • 原文地址:https://blog.csdn.net/Rocky006/article/details/133813567