【发布时间】:2022-01-01 05:27:04
【问题描述】:
在这个 for 循环中,它为每个子文件夹复制所有文件夹。所以它需要很长时间,而不是我想要的。所以例如对于文件夹“SPRING2158”,它正在复制从“SPRING00001”开始到“SPRING09999”结尾的所有内容。但它只应复制以“SPRING2158”开头的图像。不是所有的东西。
import os
import shutil
path = os.path.expanduser('/content/images/FemaleImages')
for file_name in os.listdir(path):
if file_name[:10] in nameTrainF:
shutil.copytree(path+'/', '/content/OutTrainF/'+file_name[:10]+'/')
if file_name[:10] in nameValF:
shutil.copytree(path+'/', '/content/OutValF/'+file_name[:10]+'/')
if file_name[:10] in nameTestF:
shutil.copytree(path+'/', '/content/OutTestF/'+file_name[:10]+'/')
为了让您了解数据结构,以下是从 RAR 格式中提取数据时的数据。
!unrar e "/content/drive/My Drive/femaleset.rar" "/content/images/FemaleImages/"
Extracting /content/images/FemaleImages/SPRING4796-D7-V40-H50.png OK
Extracting /content/images/FemaleImages/SPRING4796-D7-V40-H60.png OK
Extracting /content/images/FemaleImages/SPRING4796-D7-V40-H70.png OK
Extracting /content/images/FemaleImages/SPRING4796-D7-V40-H80.png OK
Extracting /content/images/FemaleImages/SPRING4796-D7-V40-H90.png OK
Extracting /content/images/FemaleImages/SPRING4798-D7-V0-H0.png OK
Extracting /content/images/FemaleImages/SPRING4798-D7-V0-H10.png OK
Extracting /content/images/FemaleImages/SPRING4798-D7-V0-H100.png OK
Extracting /content/images/FemaleImages/SPRING4798-D7-V0-H110.png OK
Extracting /content/images/FemaleImages/SPRING4798-D7-V0-H120.png OK
Extracting /content/images/FemaleImages/SPRING4798-D7-V0-H130.png OK
Extracting /content/images/FemaleImages/SPRING4798-D7-V0-H140.png OK
Extracting /content/images/FemaleImages/SPRING4798-D7-V0-H150.png OK
Extracting /content/images/FemaleImages/SPRING4798-D7-V0-H160.png OK
Colab 中输出文件夹的屏幕截图
为来自 cmets 的其他问题添加了以下更新代码:
path = os.path.expanduser('/content/images/FemaleImages')
for file_name in os.listdir(path):
if file_name[:10] in nameTrainF:
shutil.copy2(os.path.join(path, file_name), os.path.join('/content/OutTrainF/', file_name[:10],'/'))
if file_name[:10] in nameValF:
shutil.copy2(os.path.join(path, file_name), os.path.join('/content/OutValF/', file_name[:10],'/'))
if file_name[:10] in nameTestF:
shutil.copy2(os.path.join(path, file_name), os.path.join('/content/OutTestF/', file_name[:10],'/'))
【问题讨论】:
-
请添加其余代码。而且我在您的目录结构中看不到任何子文件夹
-
抱歉,代码中没有子文件夹。我只是用这个词来描述这种情况。但我添加了文件示例输出的屏幕截图。如果我能提供其他任何东西,请告诉我,谢谢!
-
所以你基本上想根据它们的前缀对图像进行分组?如果是这样的话,use the shell
-
源目录
path+'/'是整个树,不是循环的当前目录。
标签: python google-colaboratory shutil