用Python批量移动特定类型的文件(完结)

目标

目标文件夹里一共有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个文件直接全部移动就可以啦
    完成!

你可能感兴趣的:(用Python批量移动特定类型的文件(完结))