移动整理文件

移动整理文件

在同一个盘中, 文件的移动只是更改了目录名, 只有跨盘才先复制到内存

import os

address_0 = r'C:\document\python2202\01语言基础\collating documents'
contents = os.listdir(address_0)

# 方法2: 提前创建好后缀名文件夹, 好处是不会重复创建已经存在的文件夹, 坏处是要提前遍历一遍
# suffix = {i.split('.')[-1]: None for i in contents if i.split('.')[-1].islower() and os.path.isfile(os.path.join(address_0, i))}
# suffix['None'] = None
# for i in suffix:
#     os.makedirs(os.path.join(address_0, i))

for i in contents:
    current_address = os.path.join(address_0, i)

    # 筛选文件
    if os.path.isfile(current_address):
        # 采用字符串切割方法获取文件后缀名, 由于无后缀名的文件名中也允许存在'.', 因此该方法仍存在漏洞
        current_list = current_address.split('.')

        # 打开并读取记录原文件信息
        f1 = open(current_address, 'rb')
        file_content = f1.read()
        f1.close()

        # 是否带有后缀名, 有bug
        # 拿到一个包含所有文件后缀名类型的容器, 用in和not in来判断是否是文件后缀名更靠谱
        if current_list[-1].islower():

            # 创建后缀名文件夹
            # 方法1: 虽然不报错, 但是存在重复创建文件夹操作; 对比方法2好处是将文件夹的创建嵌套在文件写入循环中, 减少遍历次数
            os.makedirs(os.path.join(address_0, current_list[-1]), exist_ok=True)

            # 将原文件写入后缀名文件夹, 并删除原文件
            f2 = open(os.path.join(address_0, current_list[-1], i), 'wb')
            f2.write(file_content)
            f2.close()
            os.remove(current_address)
        else:

            # 移动没有后缀名的文件
            os.makedirs(os.path.join(address_0, 'None'), exist_ok=True)
            f2 = open(os.path.join(address_0, 'None', i), 'wb')
            f2.write(file_content)
            f2.close()
            os.remove(current_address)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值