首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从子文件夹中检索图像并将其存储在另一个单独的文件夹中?

如何从子文件夹中检索图像并将其存储在另一个单独的文件夹中?
EN

Stack Overflow用户
提问于 2019-04-07 03:08:33
回答 4查看 5.9K关注 0票数 3

我有一个名为ImageData的文件夹,里面有5000个子文件夹,每个子文件夹包含2-3个图像。我想检索这些图像并将它们存储在一个位置/文件夹中,如何使用python来实现这一点。

EN

回答 4

Stack Overflow用户

发布于 2019-04-07 03:37:31

我不是百分之百确定我明白你所说的“存储它们”是什么意思,但是因为我想帮助你,所以我会假设你想要把它们复制到不同的路径。特别是,如果我理解正确的话,您的文件夹结构如下:

代码语言:javascript
复制
├── ImageData
│   ├── dir_1
│   │   ├── img_1
│   │   ├── img_2
│   ├── dir_2
│   │   ├── img_1
│   │   ├── img_2

依此类推,您并不关心保存子目录的名称,而只是希望将所有这些图像移动到一个没有子结构的唯一目录中。

如果我的假设是正确的,那么我脑海中浮现的解决方案可能是:

代码语言:javascript
复制
import glob 
import shutil

    
destination_path = "/path/to/your/oneplace_folder/"
pattern = "/path/to/your/ImageData/*/*"  
for img in glob.glob(pattern):
    shutil.copy(img, destination_path)

这两个通配符分别用于ImageData下的子目录和其中的图像。此外,如果图像包含您希望在复制时保留的元数据,则可能需要使用documentation中指定的copy2()

票数 4
EN

Stack Overflow用户

发布于 2019-04-07 03:42:17

另一种可能的解决方案是:

代码语言:javascript
复制
import os
import cv2

directory = 'ImageData'
new_directory = 'NewImageData'

# If dir does not exist otherwise delete next line
os.mkdir(new_directory)

def copy_images():
    for file_name in os.listdir(directory):
        sub_dir_path = directory + '/' + file_name
        if (os.path.isdir(sub_dir_path)):
            for image_name in os.listdir(sub_dir_path):
                if image_name[-4:] == '.jpg':
                    img = cv2.imread(image_name)
                    copied_image_path = new_directory + '/' + image_name
                    cv2.imwrite(copied_image_path, img)

copy_images()

此代码将复制图像并将其保存到新创建的目标目录中。它不保留子文件夹层次结构。

票数 2
EN

Stack Overflow用户

发布于 2019-04-07 03:27:51

您可以从这里使用一个解决方案:Recursive sub folder search and return files in a list python来获取所有文件的列表。

然后遍历该列表,并将每个文件复制到主目录中,解决方案如下:How to move a file in Python

你最终会得到这样的结果

代码语言:javascript
复制
import glob
import os

# Location with subdirectories
my_path = "Images/"
# Location to move images to
main_dir = "ImagesMain/"

# Get List of all images
files = glob.glob(my_path + '/**/*.jpg', recursive=True)

# For each image
for file in files:
    # Get File name and extension
    filename = os.path.basename(file)
    # Copy the file with os.rename
    os.rename(
        file,
        main_dir + filename
    )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55552537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档