首页 > 解决方案 > 如何使用python将多个文件夹中的图像与计数合并为一个

问题描述

我真的在寻找解决这个问题的方法。我一直在从 python 代码生成帧,我最终将其放入不同的文件夹中,如下所示,

**folder names** swimming_0, swimming_1, noswimming_0, noswimming_1.

swimming_0       noswimming_0
frame0.jpg      frame0.jpg
frame1.jpg      frame1.jpg 
frame2.jpg      frame2.jpg

swimming_1       noswimming_1
frame0.jpg      frame0.jpg
frame1.jpg      frame1.jpg 
frame2.jpg      frame2.jpg

我的期望:

In a single folder

swimming_0_0.jpg
swimming_0_1.jpg
swimming_0_2.jpg
swimming_1_0.jpg
swimming_1_1.jpg
swimming_1_2.jpg
noswimming_0_0.jpg
noswimming_0_1.jpg
noswimming_0_2.jpg
noswimming_1_0.jpg
noswimming_1_1.jpg
noswimming_1_2.jpg

The steps we need is that: 
1. rename the images in each folder
2. combine the images

使用的 Python 代码:

step1: renaming and adding incremental numbers
import os

folderpath = r'/swimming'
fileNumber = 1

for filename in os.listdir(folderpath):
os.rename(folderpath + '//' + filename, folderpath  +  "_" + str(fileNumber))
fileNumber +=1

尽管此代码符合我对第 1 步的期望,但我正在寻找一种更有效的方法来执行此操作。有人可以在这里帮忙吗。

更新:

如果我们不跟踪文件名也很好,但至少在这种情况下,我希望结果会是这样。

swimming_0.jpg
swimming_1.jpg
swimming_2.jpg
swimming_3.jpg
swimming_4.jpg
swimming_5.jpg
noswimming_6.jpg
noswimming_7.jpg
noswimming_8.jpg
noswimming_9.jpg
noswimming_10.jpg
noswimming_11.jpg 

标签: pythondirectoryshutil

解决方案


好的,所以如果你想将不同文件夹中的文件移动到一个文件夹中,你可以试试这个:

首先你应该有这样的结构:

from_here/
    + noswimming_0/
        + frame0.png
        + frame1.png
        + frame2.png
    + noswimming_1/
        + frame0.png
        + frame1.png
        + frame2.png
    + swimming_0/
        + frame0.png
        + frame1.png
        + frame2.png
    + swimming_1/
        + frame0.png
        + frame1.png
        + frame2.png
move_here/
script.py

script.py:

import os


from_path = os.getcwd() + '/from_here'
to_path = os.getcwd() + '/move_here'

for folder in os.listdir(from_path):
    for file in os.listdir(os.path.join(from_path, folder)):
        os.rename(os.path.join(from_path, folder, file), os.path.join(to_path, f'{folder}_{file}'))

这现在应该将文件从这些单独的文件夹移动到一个(显然你可以有更多的文件夹从这些文件夹中移动或更多的文件)


推荐阅读