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}")
常用轮子:文件夹整理
最新推荐文章于 2024-09-16 13:46:43 发布