簡體   English   中英

如何重命名然后將特定的子文件夾移動到另一個目錄?

[英]How to rename then move specific subfolders to another directory?

我正在嘗試將我的數據集的體系結構重新組織到另一個方便的體系結構中。

鑒於以下架構:

Dataset/A/0000/left/
Dataset/A/0000/right/
Dataset/A/0001/left/
Dataset/A/0001/right/
    . 
    .
Dataset/A/0750/left/
Dataset/A/0750/right/

Dataset/B/0000/left/
Dataset/B/0000/right/
Dataset/B/0001/left/
Dataset/B/0001/right/
    . 
    .
Dataset/B/0750/left/
Dataset/B/0750/right/

我如何在不同的目錄中收集所有“左”和“右”子文件夾,並將它們重命名為具有以下體系結構:

Dataset/left/0000 ###  A sub-folder
Dataset/left/0001
    .
    .
Dataset/left/0750
Dataset/left/0751 ###  B sub-folder
Dataset/left/0752
    .
    .
Dataset/left/1500

這應該這樣做:

import os
import shutil

try:
  # Mock the problem
  for i in range(750):
    os.makedirs("Dataset/A/0{}/left".format(i), )
    os.makedirs("Dataset/A/0{}/right".format(i))
    os.makedirs("Dataset/B/0{}/left".format(i))
    os.makedirs("Dataset/B/0{}/right".format(i))

  os.mkdir("./Dataset/left")
  os.mkdir("./Dataset/right")

except FileExistsError as e:
  pass


# See pythoncentral.io/how-to-recursively-copy-a-directory-folder-in-python/
def copyDirectory(src, dest):
    try:
        shutil.copytree(src, dest)
    # Directories are the same
    except shutil.Error as e:
      pass
    # Any error saying that the directory doesn't exist
    except OSError as e:
        pass

def move(sub):
  for file, subfolder, folder in os.walk(sub):
    if file.split("/")[-1] in ["right", "left"]:
      src = file
      dest = "./Dataset/{}/{}".format(
      file.split("/")[-1],
      file.split("/")[-2]
      )
      copyDirectory(src, dest)

move("./Dataset/A")
move("./Dataset/B")

本質上是這個腳本的作用A)制作文件樹的模型,B)定義復制目錄的函數和C)定義函數move以遍歷目標子文件夾並應用B中的函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM