如何将奇数文件从一个文件夹复制到另一个文件夹?

2024-09-30 22:12:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个文件夹中有大约1000张名为“image290.jpg,image291.jpg,image292.jpg,…”的图片

我想将所有带有奇数的图像(如“image291.jpg,image293.jpg,image295.jpg,…)复制到另一个文件夹中

如何使用python代码完成这些工作


Tags: 代码图像文件夹图片jpg奇数image290image293
3条回答

这就是我想到的:

import re

file_names = ["image290.jpg", "image291.jpg", "image292.jpg", "image293.jpg", "image294.jpg", "image295.jpg"]

pattern = re.compile(r"[a-zA-Z]+(\d+)\.[a-zA-Z]+")

for file in file_names:
    if int(re.search(pattern, file).group(1))%2 != 0:
        print(f"copying odd numbered file {file} to blablah/bla")
    else:
        print(f"skipping even numbered file {file}")

输出:

skipping even numbered file image290.jpg
copying odd numbered file image291.jpg to blablah/bla
skipping even numbered file image292.jpg
copying odd numbered file image293.jpg to blablah/bla
skipping even numbered file image294.jpg
copying odd numbered file image295.jpg to blablah/bla

以下是我使用shutil库的解决方案:

import os
import shutil
images = os.listdir(your_dirctory_name)
for image_name in images:
    if int(image_name[5:-4]) % 2 == 1:
        shutil.copy(your_dirctory_name + "/" + image_name, your_output_directory_name)

您可以使用shutil.copyfile移动文件:

from shutil import copyfile
import os
import re

origin = '/you/folder/with/images'
paths = os.listdir(origin)
dst_dir = '/your/destination/dir/path'

for src in paths:
    r = re.search(r'image(\d*)\.jpg', src)

    if r and int(r.group(1)) % 2 != 0:
        copyfile(os.path.join(origin, src), os.path.join(dst_dir, r.group()))

相关问题 更多 >