首页 > 编程语言 >Python自动整理文件夹

Python自动整理文件夹

时间:2024-09-27 14:51:47浏览次数:10  
标签:文件 target Python 文件夹 自动 file path os dir

编写一个Python脚本来遍历指定目录下的所有文件,根据文件的扩展名来创建相应的子文件夹(如果尚不存在的话),然后将文件移动到对应的子文件夹中。同时,我们需要处理重名文件的问题,通过在文件名后添加_和数字来区分。

下面是一个实现这个功能的Python脚本示例:

import os
import shutil

def move_files_by_extension(directory):
    # 遍历指定目录
    for root, dirs, files in os.walk(directory):
        for file in files:
            # 获取文件的完整路径
            file_path = os.path.join(root, file)
            # 获取文件扩展名
            extension = os.path.splitext(file)[1][1:]  # 去掉点号
            
            # 构造目标子目录路径
            target_dir = os.path.join(root, extension)
            
            # 如果目标子目录不存在,则创建
            if not os.path.exists(target_dir):
                os.makedirs(target_dir)
            
            # 构造目标文件路径
            target_file_path = os.path.join(target_dir, file)
            
            # 如果目标文件已存在,则处理重名问题
            if os.path.exists(target_file_path):
                # 生成新的文件名,添加_1, _2等以区分重名文件
                counter = 1
                new_file_name = f"{os.path.splitext(file)[0]}_{counter}{os.path.splitext(file)[1]}"
                while os.path.exists(os.path.join(target_dir, new_file_name)):
                    counter += 1
                    new_file_name = f"{os.path.splitext(file)[0]}_{counter}{os.path.splitext(file)[1]}"
                target_file_path = os.path.join(target_dir, new_file_name)
            
            # 移动文件
            shutil.move(file_path, target_file_path)
            print(f"Moved {file_path} to {target_file_path}")

# 使用示例
directory_path = '/path/to/your/directory'
move_files_by_extension(directory_path)

注意事项

  1. 请将directory_path替换为你想要遍历的目录的路径。
  2. 该脚本会递归遍历指定目录及其所有子目录。
  3. 如果目标文件夹已经存在,脚本将不会重新创建它,直接使用该文件夹。
  4. 如果目标文件夹中已存在同名文件,脚本将通过在文件名后添加_和递增的数字来重命名文件。
  5. 使用shutil.move()函数来移动文件,这个函数如果目标路径已经存在同名文件,则会抛出FileExistsError异常。为了避免这种情况,脚本会先检查目标文件是否存在,并相应地重命名新文件。
  6. 脚本会打印出每个被移动文件的原路径和目标路径,以便于追踪和调试。

标签:文件,target,Python,文件夹,自动,file,path,os,dir
From: https://blog.csdn.net/m0_54490473/article/details/142503008

相关文章

  • 数据结构编程实践20讲(Python版)—02链表
    本文目录02链表linked-listS1说明S2示例单向链表双向链表循环链表S3问题:反转单向链表求解思路Python3程序S4问题:双向链表实现历史浏览网页求解思路Python3程序S5问题:基于循环链表的玩家出牌顺序求解思路Python3程序往期链接01数组02链表linked-lis......
  • 自动化办公-python中的open()函数
    Python中的open()函数用于打开一个文件,并返回一个文件对象,您可以通过该对象对文件进行读写操作。基本语法:open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)参数说明:file:要打开的文件路径(字符串)。可以是......
  • 自动化办公-Python-os模块的使用
    os.path模块的使用在指定文件路径时,由于操作系统的差异,直接使用硬编码的路径可能会导致程序在不同平台上无法正常运行。为了解决这个问题,Python提供了os.path模块,它包含了一系列用于路径操作的函数,可以帮助您以跨平台的方式处理文件路径。为什么要使用os.path模块......
  • 营销自动化全新升级:一键启动,开启企业高效增长之旅!
    营销通营销自动化能力全新升级!!!不仅保留了原有的实时提醒与精准触达功能,更引入了五大自动化SOP分支设置,以全面应对更为复杂的客户培育场景。这一升级大幅提升了营销效率,使您的营销策略更加灵活与高效,助力企业实现业务增长。下面以一家提供高级数据分析服务的B2B公司为例,让我们一起......
  • Python 迭代器双指针
    我们知道在cpp这种指针语言里面,双指针是这么写的:for(autoi=v.begin(),j=v.begin();j<v,end();j++){//dosomething...//updatepointeriwhile(cond){i++;}}对于py这样不带指针的,一般就只能这么写:i=0forjinrange(len(lst)):#do_something......
  • 自动加载类文件时发生错误,类名【core\\basic\\Kernel】
    当你使用PbootCMS时遇到了自动加载类文件时发生的错误,具体错误信息如下:自动加载类文件时发生错误,类名【core\\basic\\Kernel】这个问题通常是由于Kernel.php文件丢失或被误删除导致的。特别是在阿里云虚拟主机环境下,可能会因为安全策略而删除某些文件。以下是详细的解决......
  • python爬虫案例——抓取三级跳转网页,实现逐页抓取,数据存入mysql数据库(10)
    文章目录1、目标任务2、网页分析3、完整代码1、目标任务目标站点:情话网(http://www.ainicr.cn/tab/)任务:抓取该网站下所有标签下的所有情话语句,并将其存入mysql数据库2、网页分析用浏览器打开网页,按F12或右键检查,进入开发者模式,在Network-Doc下找到网页的数......
  • PYTHON钢琴简谱播放器代码QZQ
    importtkinterastkimportpygame.midiimporttimeimportthreadingimportrandom初始化pygame.midipygame.midi.init()获取MIDI输出设备midi_out=pygame.midi.Output(0)乐器名称映射instrument_names={0:“大钢琴(声学钢琴)”,1:“明亮的钢琴”,2:......
  • QT 打包成文件夹
    1.首先,将调试模式改为【Release】,然后重新运行程序:2.运行之后会生成一个.exe文件(这个exe文件是不能运行的),在编译目录下将它找到然后将这个exe文件复制出来,另外创建一个文件夹,将它放进去3.打开开始菜单,在Qt文件夹中找到MinGW文件夹中的这个文件(我是用MinGW_32_bit编译的),所以......
  • python教程修订版
    9/23Inthiscourse,I'mgoingtoteachyoueverythingyouneedtoknowtogetstartedprogramminginPython.Now,Pythonisoneofthemostpopularprogramminglanguagesoutthere在众多的……中.Andit'sbyfar目前为止oneofthemostsõughtafter受欢迎......