文件转移Python代码

  • 线上应用为了节省成本,采用fastdfs自建文件服务器,系统上线7年之久,1T的磁盘空间使用达95%,更让人郁闷的是,磁盘竟然不能动态扩容,只能再次挂接大磁盘,更改文件存储路径到新磁盘目录,这样文件转移就成关键操作。
  • 大量的文件转移肯定耗时,时间难以估算,只能从业务出发,罗列出关键业务附件类型,根据文件后缀逐步迁移,重要的先处理,减少对应用的影响,文件目录多层嵌套,因此开发一个文件迁移小工具势在必行,这正是Python发挥优势的时候。
话不多少,直接上代码:
#!/usr/bin/env python
#-*- coding:UTF-8 -*-
import os,shutil

def move_file(orgin_path,moved_path):
    #判断目录是否存在
    if os.path.exists(moved_path)==False:
        os.mkdir(moved_path)
    
    dir_files=os.listdir(orgin_path)            #得到该文件夹下所有的文件
    for file in  dir_files:
        file_path=os.path.join(orgin_path,file)   #路径拼接成绝对路径
        if os.path.isfile(file_path):           #如果是文件,就打印这个文件路径
            if file.endswith(".xls") or file.endswith(".xlsx"):
                if os.path.exists(os.path.join(moved_path,file)):
                    print("有重复文件!!,跳过,不移动!!!")
                    continue
                else:
                    shutil.move(file_path, moved_path)
        if os.path.isdir(file_path):  #如果目录,就递归子目录
            #新文件夹名称
            new_moved_path=os.path.join(moved_path,file)
            move_file(file_path,new_moved_path)
    print("移动所有文件完成!"+orgin_path)

if __name__ == '__main__':
    orgin_path = r'/home/server/fastdfs/data'      #  这个是你数据源  文件夹
    moved_path = r'/fastdfs/storage0/data'      #  这个是你想要移动到哪里的的文件夹
    move_file(orgin_path,moved_path)

你可能感兴趣的:(文件转移Python代码)