python - 如何使用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
解决方案
好的,所以如果你想将不同文件夹中的文件移动到一个文件夹中,你可以试试这个:
首先你应该有这样的结构:
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}'))
这现在应该将文件从这些单独的文件夹移动到一个(显然你可以有更多的文件夹从这些文件夹中移动或更多的文件)
推荐阅读
- firebase - Flutter: PlatformException(error, Invalid document reference。文档引用必须有偶数个段,但是
有 1,空) - c# - 需要将字段转换为日期时间
- c - doxygen 在 C 头文件中记录函数声明
- r - 高效搜索和更新、数据表或稀疏矩阵 - R
- javascript - 有没有办法将音频流(网络音频)节点路由为虚拟输入流源?
- python - 生成假数据和“AppRegistryNotReady:应用程序尚未加载”错误
- google-calendar-api - 尝试使用我的应用程序使用 Google 登录,但使用 AWS cognito 暂时禁用此应用程序的使用 Google 登录
- javascript - 如何格式化 RxJS redux 可观察史诗来做很多事情?
- android - 连接来自不同来源的 Flutter 代码,例如 youtube 教程
- css - ::before 与第一个孩子的内容相同