python将当前文件夹下的文本文件分类移动到当前目录下对应的子目录
例如,将'D:\PYTHONWORKPLACE\data\txt'目录下的13种文件移动到对应13个文件夹(跳过文件夹创建过程)
代码如下:
# 移动文件到对应文件夹
def move_files_to_type_folder(folder):
import re
import shutil
import glob
import os
# 用来匹配文件类型的匹配条件
match_condition = re.compile(r'[A-Z_A-Z]')
# 获取目录下所有文件和文件夹名
allfiles = os.listdir(folder)
file_types = []
# 剔除文件,剩下文件夹
for f in allfiles:
fname = os.path.join(folder, f)
if os.path.isfile(fname):
pass
else:
file_types.append(f)
# 匹配文件夹下所有txt文件路径
files = glob.glob(os.path.join(folder, "*.txt"))
# 文件名匹配和移动文件
for f in files:
# 匹配文件名
fname = os.path.basename(f)
# 从文件名匹配字母确定文件类型
type_arr = match_condition.findall(fname[:-4])
# 将字符数组转为字符串
type_str = ""
type_str = type_str.join(type_arr)
# 根据文件名判断文件类型
for f_type in file_types:
if type_str == f_type:
# 移动的目的文件夹名
new_filename = folder + '\\' + type_str + '\\' + fname
# 移动文件
shutil.move(f, new_filename)
print('move {} to {} successfully'.format(f, new_filename))
break
if __name__ == '__main__':
folder = r'D:\PYTHONWORKPLACE\data\txt'
move_files_to_type_folder(folder)