python複製資料夾到一個目錄,或者按目錄層級建立複製
# !/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部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2779780/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 複製目錄下的全部檔案到另一個目錄
- 遞迴處理複製變數目錄按原路徑複製到新目錄的指令碼遞迴變數指令碼
- Windows 複製 xcopy 檔案到另外一個 目錄Windows
- windows 把指定目錄的檔案複製到當前目錄Windows
- cp 快捷命令:複製檔案到多個目錄
- php複製目錄及檔案PHP
- git 命令建立一個資料夾目錄Git
- Linux 只複製目錄,不復制目錄下的資料檔案Linux
- Python shutil用法 複製檔案與目錄操作Python
- java進階(34)--File類、目錄複製Java
- nodejs呼叫cmd命令實現複製目錄NodeJS
- 複製指定源位置的多級資料夾下所有檔案到指定目標位置
- c#複製包含子目錄資料夾程式碼C#
- C# 將資料夾中檔案複製到另一個資料夾C#
- 如何批量複製多個檔案到多個目錄中(批量複製檔案,多對多檔案高效操作的方法)
- 第17 章、複製目標資料庫資料庫
- python建立多層目錄的方式Python
- tar解壓到指定目錄並去掉壓縮檔案的層級資料夾
- 批量打包一個資料夾下的多個目錄
- linux[批量複製並重新命名]和[批量複製檔案到多個資料夾]Linux
- K8s kubectl 複製命令曝目錄遍歷漏洞K8S
- 利用儲存級的複製技術將一個ASM資料庫快速clone到目標環境ASM資料庫
- 生存目錄-無層級
- DM7資料複製之資料庫級複製資料庫
- MacOS 升級 Catalina 後根目錄無法建立資料夾Mac
- DM7資料複製之模式級複製模式
- vba之小功能記錄--資料複製
- 資料庫複製(一)–複製介紹資料庫
- nodejs建立多層目錄NodeJS
- linux命令之----cp命令用於複製檔案或目錄Linux
- scp命令 用於Linux之間複製檔案和目錄Linux
- linux複製檔案到另一個資料夾怎麼操作 linux複製檔案的命令介紹Linux
- 0001-HTML中上一級目錄、上上級目錄、下一級目錄、下下級目錄中的頁面的相互引用HTML
- BIEE 目錄遷移(資料夾)方式
- WINDOWS自動打包目錄指令碼 複製到遠端備份伺服器儲存Windows指令碼伺服器
- 寶塔皮膚根目錄是哪個資料夾
- RMAN 複製目標資料庫的理論知識資料庫
- list複製踩坑記錄