以下这段代码中,共用到了python原生的三个库,分别是os shutil 和time
os模块的重点在于:
os.listdir 将某路径下所有文件(包括文件夹)全部列举出来
os.path.isdir 判断是否是一个文件夹路径
os.path.join 把路径名和文件名组合成文件名的完整路径
os.makedirs 创建文件或文件夹
shutil模块的重点在于:
shutil.copyfile 复制文件,若被复制对象不存在,则创建
time模块的重点在于:
time.perf_counter 以高精度微秒级计数时间,用于语句运行时间的计算
代码的功能为:迭代遍历./test文件夹下所有文件,如果是一个文件夹则继续访问直至所有的文件都被遍历,如果它是一个文件而不是一个文件夹(这个地方如果对文件名进行解析并进行条件判断,则将实现筛选复制的功能),则将其拷贝到./dst文件夹下,文件名保持不变。
# -*- coding:utf-8 -*-
# author: Jacob Chen
# time: 2021-07-06
# description: copy pictures from files
import os
import shutil
import time
def pick_pic(src_pth, dst_pth, count):
files = os.listdir(src_pth)
for file in files:
if os.path.isdir(os.path.join(src_pth, file)):
count = pick_pic(os.path.join(src_pth, file), dst_pth, count)
else:
shutil.copyfile(os.path.join(src_pth, file), os.path.join(dst_pth, file))
count += 1
print(str(count) + ' Copied picture name: ' + os.path.join(src_pth, file))
return count
if __name__ == '__main__':
src_path = './test'
dst_path = './dst'
if not os.path.exists(src_path):
os.makedirs(src_path)
if not os.path.exists(dst_path):
os.makedirs(dst_path)
count0 = 0
T1 = time.perf_counter()
count0 = pick_pic(src_path, dst_path, count0)
T2 = time.perf_counter()
print('Total copied pictures: ' + str(count0))
print('Processing time: ' + str((T2-T1)*1000) + 'ms')