目標
目標文件夾里一共有2000個文件顽爹,我想把前1000個放在數(shù)據(jù)集文件夾中纤泵,后1000個文件放在答案集文件夾中,并且重命名他們镜粤。
重命名寫在下篇文章里捏题。
批量移動文件
從其它網(wǎng)站扒下來的參考代碼
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個文件,文件是按順序分布的同规,因此只要在上面的函數(shù)里加上限制條件限制文件數(shù)目就可以了循狰。
即給for循環(huán)計數(shù)窟社。
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 绪钥,內(nèi)容是該文件夾中所有的目錄的名字(不包括子目錄)
- files 同樣是 list , 內(nèi)容是該文件夾中所有的文件(不包括子目錄)
下面需要同時移動前1000個和后1000個文件灿里。
- 前1000個文件移動了之后
- 后1000個文件直接全部移動就可以啦
完成!