【问题标题】:Copying images from all the directories into another将所有目录中的图像复制到另一个目录中
【发布时间】:2018-03-23 00:16:38
【问题描述】:

我有一个包含大约 3000 个目录的目录。这 3000 个目录中的每一个都有 2 个 .jpg 图像。我的做法是将这 3000 个目录中的每个图像移动到一个单独的文件夹中。这是包含所有图像的主目录。

这是我的结构更直观的版本:

 -dir1
  -littledir1
    - image1.jpg
    -image2.jpg
  -dir2
    -littledir2
      -image1.jpg
      -image2.jpg
   .
   .
   .
  -dir 3000
    -litledir3000
       -image1.jpg
       -image2.jpg

我尝试使用以下代码解决此问题,但没有取得多大成功。继续运行而不会复制任何内容:

我的代码:

import os
import glob
import shutil

dirpath = '/Volumes/LaCie/lfw/'
dirs = os.listdir(dirpath)

dst_dir = '/Volumes/LaCie/lfw/dstn/'

i = 1

for dirname in dirs:
    if (dirname.endswith('.DS_Store')):
        continue

    for jpgfile in glob.iglob(os.path.join(dirpath, "*.jpg")):
        shutil.copy(jpgfile, dst_dir)
        print (dst_dir)

我怎样才能更好地解决这个问题?

【问题讨论】:

  • 你确定你有 *.jpg 文件吗?..
  • into one separate folders?!?你的意思是一个单独的文件夹吗?即要将所有图像放在同一个文件夹中?
  • 很抱歉给您带来了困惑。我的意思是同一文件夹中的所有图像

标签: python shutil


【解决方案1】:

您的print (dst_dir) 打印了吗?我运行了你的代码,但内部打印没有运行。

我并不是说这是一种更好的方法,但这对我有用...显然您需要根据自己的情况进行更改:

import glob
import os
import shutil

dirpath = 'dir1'
dirs = os.listdir(dirpath)

for dirname in dirs:
    print(dirname)
    os.path.join(dirpath)

    # for file in glob.iglob(os.path.join(dirpath, '*.txt')):
    #     print(file)
    for file in os.listdir(os.path.join(dirpath, dirname)):
        shutil.copy(os.path.join(dirpath, dirname, file), '.')
        print(file)

【讨论】:

    【解决方案2】:

    如果你在 *nix 系统上使用这个

    cp $(find dirpath -name "*jpg") dst_dir/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-18
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      相关资源
      最近更新 更多