【发布时间】:2020-08-03 12:59:42
【问题描述】:
我是python新手,我正在尝试构建一个可以从整个服务器收集图像的小脚本,我有一定的图像命名:
AMZ_1004.jpg
AMZ_1272.jpg
GOO_1.jpeg
GOO_2.png
我希望脚本浏览每个目录并将文件复制(而不是移动)到 AMZ 和 GOO
import shutil,os
goo_dst = '/home/usr2/Pictures/GOO'
amz_dst = '/home/usr2/Pictures/AMZ'
os.makedirs(goo_dst,exist_ok=1)
os.makedirs(amz_dst,exist_ok=1)
for root, dirs, files in os.walk('/'):
for name in files:
path = os.path.join(root, name)
if name.startswith('GOO_') and (name.endswith('.jpg') or name.endswith('.jpeg') or name.endswith('.png')):
shutil.copyfile(path, goo_dst)
elif name.startswith('AMZ_') and name.endswith('.jpg'):
shutil.copyfile(path, amz_dst)
脚本运行正常,有没有办法加快进程?
脚本可以在 Arch Linux 上运行
【问题讨论】:
-
@CavinDsouza 我运行 python 2.7 ,不认为会工作
-
哦,开枪。似乎
os.walk()递归调用os.listdir()也获取文件的元信息,这使得它变慢。os.scandir()类似且更快,但我认为 v2.7 不支持它 -
shutil是复制文件的最快方法吗?仅从名称来看,它似乎可能会用于一个单独的进程,这会产生很多开销。 -
你可以试试多处理
标签: python python-2.7 python-2.x