ITPub博客

首页 > IT职业 > IT生活 > python拷贝文件夹到一个目录,或者按目录层级创建拷贝

python拷贝文件夹到一个目录,或者按目录层级创建拷贝

IT生活 作者:专注的阿熊 时间:2021-07-05 17:25:12 0 删除 编辑

# !/usr/bin/env python

# -*- coding: utf-8 -*-

import os

from glob2 import glob

from xml.dom.minidom import parse

import shutil

from imutils import paths

from tqdm import tqdm

import xml

from xml.dom import minidom

import codecs

import cv2

import numpy as np

# 拷贝一个文件夹下所有文件,到另一个目录下, dest 不根据 src 文件夹目录层级来创建,只放到一个目录下

def copyOneFolderAllFile():

     src_dir = r''

     src_all_file = list(paths.list_files(src_dir))

     dest_dir = r''

     for src_file in tqdm(src_all_file):

         src_dir, src_name = os.path.split(src_file)

         dest_path = os.path.join(dest_dir, src_name)

         shutil.copyfile(src_file, dest_path)

     print('Finish')

import os

import time

copyFileCounts = 0

def copyFiles(sourceDir, targetDir):

     global copyFileCounts

     print(sourceDir)

     print(u"%s 当前处理文件夹 %s 已处理 %s 个文件 " % (

     time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())), sourceDir, copyFileCounts))

     for f in os.listdir(sourceDir):

         sourceF = os.path.join(sourceDir, f)

         targetF = os.path.join(targetDir, f)

         if os.path.isfile(sourceF):

             # 创建目录

             if not os.path.exists(targetDir):

                 os.makedirs(targetDir)

             copyFileCounts += 1

             # 文件不存在,或者存在但是大小不同,覆盖

             if not os.path.exists(targetF) or (

                     os.path.exists(targetF) and (os.path.getsize(targetF) != os.path.getsize(sourceF))):

                 # 2 进制文件

                 open(targetF, "wb").write(open(sourceF, "rb").read())

                 print(u"%s %s 复制完毕 "外汇跟单gendan5.com % (time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())), targetF))

             else:

                 print(u"%s %s 已存在,不重复复制 " % (time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())), targetF))

         if os.path.isdir(sourceF):

             copyFiles(sourceF, targetF)

     print('Finish')

# 拷贝一个文件夹下所有文件,到另一个目录下, dest 根据 src 文件夹目录层级来创建

def copyDir():

     sourceDir = r''

     targetDir = r''

     copyFiles(sourceDir, targetDir)

# 根据 split_num 的个数,创建 split_num 个文件夹,把数据随机分配到这些文件夹中

def splitFile():

     split_num = 9 # 需要分几个文件夹

     org_dir = r''

     save_root = r''

     all_img = list(paths.list_images(org_dir))

     random.shuffle(all_img) # 打乱

     dir_num = int(len(all_img) / split_num)

     num_dir = 0

     for i in tqdm(range(len(all_img))):

         img_name = os.path.split(all_img[i])[1]

         save_dir = os.path.join(save_root, str(num_dir))

         if not os.path.exists(save_dir):

             os.mkdir(save_dir)

         save_path = os.path.join(save_dir, img_name)

         org_path = os.path.join(org_dir, img_name)

         shutil.copyfile(org_path, save_path)

         if ((i + 1) % dir_num) == 0:

             num_dir += 1

         if num_dir == split_num:

             num_dir -= 1

     print('Finish')

if __name__ == '__main__':

     copyDir()


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946337/viewspace-2779780/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-23

  • 博文量
    410
  • 访问量
    276813