一、参考来源
参考了下面这篇文章,但是我对他的代码进行了改进,并且注释方面应该更详细易懂。
Python-根据txt中的文件名批量移动文件_橘也的博客-CSDN博客_按照txt列表批量移动文件
二、背景
本人训练某一个yolo算法时,需要把训练集图片放在train文件夹下,测试集图片放在val文件夹下;全部图片路径打乱后,划分成两部分,路径信息分别存至train.txt、val.txt文件。
下面是存文件路径信息的txt文件
下面JPEGImages文件夹存有所有图片,JPEGImages_train、JPEGImages_val分别先创建好,用来预备装载训练集、测试集图片的。
复制下面的代码到一个Move images based on info of TXT.py文件中,然后存在主目录下。
为什么下面的代码中有模板部分?因为我考虑到有时候我们需要把原始代码保留,根据此进行符合不同用户需求的更改时,直接在自定义部分改动,而模板部分予以保留,作为备份信息,以防改动后忘记最基本的代码组成。
三、python代码
import shutil
'''
1、下面的这段代码是模板,txt文件中每一行应该代表一个文件名(仅包括文件名)
2、如果多了前面的父级目录字符串,可以直接全部替换
3、txt文件中最好包括图片文件后缀,此时自定义部分可以去掉.jpg后缀,从而包括多种类型的图片
'''
# with open('Pictures/method of moving.txt') as file_object:
# for line in file_object:
# # print(line)
# shutil.move('Pictures/image/'+line.rstrip('\n')+'.jpg', "Picures/new_directoy")
'''
下面的这段代码是自定义部分
'''
with open(r'Imagesets\valid1.txt') as file_object:
for line in file_object:
# print(line)
shutil.move('JPEGImages/'+line.rstrip('\n'), "JPEGImages_val")