目标
目标文件夹里一共有2000个文件,我想把前1000个放在数据集文件夹中,后1000个文件放在答案集文件夹中,并且重命名他们。
重命名写在下篇文章里。
批量移动文件
从其它网站扒下来的参考代码
import os
import shutil
# 旧地址、新地址、文件格式
def filemove(oldfile, newfile, fileformat):
# 列出文件下所有文件
weblist = os.walk(oldfile)
newpath = newfile
for path, d, filelist in weblist:
for filename in filelist:
if fileformat in filename:
full_path = os.path.join(path, filename) # 旧地址 + 文件名
despath = newpath + filename # 新地址 +文件名
print(shutil.move(full_path, despath), '文件移动成功') # 移动文件至新的文件夹
else:
print('文件不存在', filename)
def filemove(oldfile, newfile, fileformat):
# 列出文件下所有文件
weblist = os.walk(oldfile)
newpath = newfile
for path, d, filelist in weblist:
for filename in filelist:
if fileformat in filename:
full_path = os.path.join(path, filename) # 旧地址 + 文件名
despath = newpath + filename # 新地址 +文件名
print(shutil.move(full_path, despath), '文件移动成功') # 移动文件至新的文件夹
else:
print('文件不存在', filename)
filemove('/Users/lijinlong/Desktop/大前端/WEB大前端课程/资深', '/Users/lijinlong/Desktop/大前端/WEB大前端课程/资深/', '.mp4')
上面这段代码里移动了该文件夹下所有
.mp4
类型的文件。
我们需要移动前1000个文件,文件是按顺序分布的,因此只要在上面的函数里加上限制条件限制文件数目就可以了。
即给for循环计数。
import os
import shutil
# old address, new address, format
def filemove(oldfile, newfile, fileformat, remove_value):
# list all the data
weblist = os.walk(oldfile)
newpath = newfile
count = 0
for path, d, filelist in weblist:
for filename in filelist:
if fileformat in filename:
full_path = os.path.join(path, filename) # old address+file name
despath = newpath + filename # new address+file name
print(shutil.move(full_path, despath), 'move sucessfully') # move the file to new address
count = count + 1
if count == remove_value:
break
else:
print('The file does not exist', filename)
filemove('./folder1/','./folder2', '.tif',2 )
os.walk的用法:
top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。
- root 所指的是当前正在遍历的这个文件夹的本身的地址
- dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
- files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
下面需要同时移动前1000个和后1000个文件。
- 前1000个文件移动了之后
- 后1000个文件直接全部移动就可以啦
完成!