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 快捷命令:複製檔案到多個目錄
- Linux 只複製目錄,不復制目錄下的資料檔案Linux
- git 命令建立一個資料夾目錄Git
- Python shutil用法 複製檔案與目錄操作Python
- java進階(34)--File類、目錄複製Java
- 如何批量複製多個檔案到多個目錄中(批量複製檔案,多對多檔案高效操作的方法)
- C# 將資料夾中檔案複製到另一個資料夾C#
- MacOS 升級 Catalina 後根目錄無法建立資料夾Mac
- nodejs建立多層目錄NodeJS
- tar解壓到指定目錄並去掉壓縮檔案的層級資料夾
- K8s kubectl 複製命令曝目錄遍歷漏洞K8S
- scp命令 用於Linux之間複製檔案和目錄Linux
- 生存目錄-無層級
- linux複製檔案到另一個資料夾怎麼操作 linux複製檔案的命令介紹Linux
- DM7資料複製之資料庫級複製資料庫
- DM7資料複製之模式級複製模式
- 資料庫複製(一)–複製介紹資料庫
- 踩坑PHP複製檔案到另外資料夾PHP
- WINDOWS自動打包目錄指令碼 複製到遠端備份伺服器儲存Windows指令碼伺服器
- Linux中如何複製檔案或目錄?常用命令是什麼?Linux
- linux 統計當前目錄下檔案或者資料夾的數量Linux
- c++ 獲取資料夾目錄名字C++
- 寶塔皮膚根目錄是哪個資料夾
- list複製踩坑記錄
- ZeroClipboard 多個複製按鈕,多個複製連結 實現方式
- python 淺複製、深複製坑Python
- python 深複製和淺複製Python
- idea專案的resource目錄新建資料夾Idea
- Swagger如何匹配多個Controller類或者目錄SwaggerController
- Mac 系統如何利用軟連結在根目錄建立資料夾?Mac
- Day 7.5 資料型別總結 + 複製 淺複製 深複製資料型別
- Linux中返回上一級目錄和返回根目錄命令Linux
- vscode markdown建立目錄VSCode
- Linux批量建立目錄Linux
- 資料共享(淺複製)與資料獨立(深複製)