常用轮子:文件夹整理

import os
import shutil
import glob
import numpy as np

class Class_Util_Folder():
    def __init__(self):
        pass

    def get_all_folders(self,base_dir):
        """获取基文件夹下的所有子文件夹"""
        folder_list = []
        for root,dir_names,file_names in os.walk(base_dir):
            for dir_name in dir_names:
                dir_path = os.path.join(root,dir_name)
                folder_list.append(dir_path)
        return folder_list

    def get_all_files(self,base_dir):
        """获取基文件夹下的所有子文件"""
        file_list = []
        for root,dir_names,file_names in os.walk(base_dir):
            for file_name in file_names:
                file_path = os.path.join(root,file_name)
                file_list.append(file_path)
        return file_list

    def remove_empty_folder(self,folder_path):
        """删除空文件夹"""
        if len(os.listdir(folder_path)) == 0:
            os.rmdir(folder_path)

    def get_file_lists(self,fold_path):
        """
        获取folder_path文件夹下的所有文件及文件名。
        """
        file_path_list = np.sort(glob.glob(fold_path+"/*"))# 获取文件夹下的所有文件
        file_name_list = [os.path.split(file)[-1] for file in file_path_list]#路径分割,获取文件名

        file_path_list = [str(file) for file in file_path_list] # 把文件路径转为string格式
        file_name_list = [str(file) for file in file_name_list] # 把文件名转为string格式
        
        return file_path_list,file_name_list
    
    def get_file_name_list(self,folder_path,txt_path):
        """获取一个文件夹下的所有文件的文件名,并写入text文件中"""
        file_path_list,file_name_list = self.get_file_lists(folder_path)
        self.write_list_2_txt(file_name_list,txt_path)

    def write_list_2_txt(self,data_list,txt_path):
        """把列表中的文本数据写入txt文件中"""
        assert len(data_list)>0
        txt_file = open(txt_path,"w")
        for data in data_list:
            assert isinstance(data,str)
            txt_file.write(str(data+"\n"))
        txt_file.close()

    def read_txt_2_list(self,txt_path):
        """从txt文件中读取文本,为列表"""
        assert os.path.exists(txt_path)
        txt_file = open(txt_path,"r")
        data_list = []
        for data in txt_file.readlines():
            data = data.strip("\n")
            data_list.append(data)
        txt_file.close()

        return data_list

    def move_file(self,src_file,aim_file):
        """移动文件:从src_file移动到aim_file"""
        assert (os.path.exists(src_file))
        assert (src_file.split("/")[-1] == aim_file.split("/")[-1])
        if not os.path.exists(aim_file):
            shutil.move(src_file,aim_file)
        else:
            os.remove(src_file)

    def get_files_from_grandpa_fold(self,base_dir):
        """ 获取所有孙文件夹中的文件 """
        path_list = glob.glob(base_dir+"/*/*") 

        file_path_list,file_name_list = [],[]
        for path in path_list:
            if os.path.isfile(path):
                file_path_list.append(path)
                file_name_list.append(os.path.split(path)[-1])

        return file_path_list,file_name_list

    def print_progress(self,current_num,total_num):
        """        打印当前进度        """
        print(f"{round(current_num/total_num*100,2)}%,{current_num}//{total_num}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值