如何将图像从多个子文件夹复制到公共文件夹并重命名?

湿婆

让我们假设以下源路径和目标路径:

dir_src = r"/path/to/folder_with_subfolders"
dir_dst = r"/path/to/destination_folder" 

目录“folder_with_subfolders”包含多个子文件夹及其相关文件,如下树图所示:

├── folder_with_subfolders
│   ├── Subfolder_1
|   |   ├── Subfolder1_1
|   |   |   ├──Subfolder_with_patientID1
|   |   |   |   ├── 1.dcm
|   |   |   |   ├── 2.dcm
|   |   |   |   ├── 3.dcm
                    .......
│   ├── Subfolder_2
|   |   ├── Subfolder2_1
|   |   |   ├──Subfolder_with_patientID2
|   |   |   |   ├── 1.dcm
|   |   |   |   ├── 2.dcm
                    .......
│   ├── Subfolder_3
|   |   ├── Subfolder3_1
|   |   |   ├──Subfolder_with_patientID3
|   |   |   |   ├── 1.dcm
|   |   |   |   ├── 2.dcm
|   |   |   |   ├── 3.dcm
|   |   |   |   ├── 4.dcm
                    .......

可以看出,DICOM 图像文件具有相同的名称(1.dcm、2.dcm、3.dcm、...)但它们属于不同的患者。子文件夹“Subfolder_with_patientID1”、“Subfolder_with_patientID2”、“Subfolder_with_patientID3”具有特定于该患者的不同文件夹名称。我想将所有这些 DICOM 图像复制到目标目录,同时重命名它们,以便每个图像名称都附加有该患者特定的子文件夹名称,即像 Subfolder_with_patientID1_1.dcm 的名称、Subfolder_with_patientID1_2.dcm 的名称等等在。这是启动脚本:

import glob
import os

# Location with subdirectories
dir_src = r"/path/to/folder_with_subfolders/"
#destination loction to move all the files
dir_dst = r"/path/to/destination/"    
# Get List of all images
files = glob.glob(dir_src + '/**/**/**/*.dcm', recursive=True)     
for file in files:
    # Get File name and extension
    filename = os.path.basename(file)
    filename=filename[:-4].replace(".",.........) + ".dcm"
    # Copy the file with os.rename
    if not os.path.exists(os.path.join(dir_dst, filename)):
        os.rename(file, os.path.join(dir_dst, filename))
  
尼尔·戈弗雷·庞恰诺

使用shutil.copy2复制文件。

import glob
import os
import shutil

# Location with subdirectories
dir_src = "/home/nponcian/Documents/folder_with_subfolders/"

# Destination location to copy all the files
dir_dst = "/home/nponcian/Documents/folder_with_subfolders_dest/"

# Get List of all images
files = glob.glob(dir_src + '/**/*.dcm', recursive=True)

# Create the destination directory
if not os.path.exists(dir_dst):
    os.mkdir(dir_dst)

# For each image
for file_name_src in files:
    # Let's say file_name_src is currently "/home/nponcian/Documents/folder_with_subfolders/Subfolder_1/Subfolder1_1/Subfolder_with_patientID1/2.dcm"

    file_dir = os.path.basename(os.path.dirname(file_name_src))  # Would be "Subfolder_with_patientID1"
    file_name = os.path.basename(file_name_src)  # Would be "2.dcm"

    file_name_dst = os.path.join(dir_dst, f"{file_dir}_{file_name}")  # Would be "/home/nponcian/Documents/folder_with_subfolders_dest/Subfolder_with_patientID1_2.dcm"

    shutil.copy2(file_name_src, file_name_dst)
    print(f"Copied:\n\tFr: {file_name_src}\n\tTo: {file_name_dst}")

脚本运行前的文件树

$ tree
.
├── folder_with_subfolders
│   ├── Subfolder_1
│   │   └── Subfolder1_1
│   │       └── Subfolder_with_patientID1
│   │           ├── 1.dcm
│   │           ├── 2.dcm
│   │           └── 3.dcm
│   ├── Subfolder_2
│   │   └── Subfolder2_1
│   │       └── Subfolder_with_patientID2
│   │           ├── 1.dcm
│   │           └── 2.dcm
│   └── Subfolder_3
│       └── Subfolder3_1
│           └── Subfolder_with_patientID3
│               ├── 1.dcm
│               ├── 2.dcm
│               ├── 3.dcm
│               └── 4.dcm
└── script.py

10 directories, 10 files

脚本运行后的文件树

$ tree
.
├── folder_with_subfolders
│   ├── Subfolder_1
│   │   └── Subfolder1_1
│   │       └── Subfolder_with_patientID1
│   │           ├── 1.dcm
│   │           ├── 2.dcm
│   │           └── 3.dcm
│   ├── Subfolder_2
│   │   └── Subfolder2_1
│   │       └── Subfolder_with_patientID2
│   │           ├── 1.dcm
│   │           └── 2.dcm
│   └── Subfolder_3
│       └── Subfolder3_1
│           └── Subfolder_with_patientID3
│               ├── 1.dcm
│               ├── 2.dcm
│               ├── 3.dcm
│               └── 4.dcm
├── folder_with_subfolders_dest
│   ├── Subfolder_with_patientID1_1.dcm
│   ├── Subfolder_with_patientID1_2.dcm
│   ├── Subfolder_with_patientID1_3.dcm
│   ├── Subfolder_with_patientID2_1.dcm
│   ├── Subfolder_with_patientID2_2.dcm
│   ├── Subfolder_with_patientID3_1.dcm
│   ├── Subfolder_with_patientID3_2.dcm
│   ├── Subfolder_with_patientID3_3.dcm
│   └── Subfolder_with_patientID3_4.dcm
└── script.py

11 directories, 19 files

日志

$ python3 script.py 
Copied:
    Fr: /home/nponcian/Documents/folder_with_subfolders/Subfolder_2/Subfolder2_1/Subfolder_with_patientID2/2.dcm
    To: /home/nponcian/Documents/folder_with_subfolders_dest/Subfolder_with_patientID2_2.dcm
Copied:
    Fr: /home/nponcian/Documents/folder_with_subfolders/Subfolder_2/Subfolder2_1/Subfolder_with_patientID2/1.dcm
    To: /home/nponcian/Documents/folder_with_subfolders_dest/Subfolder_with_patientID2_1.dcm
Copied:
    Fr: /home/nponcian/Documents/folder_with_subfolders/Subfolder_1/Subfolder1_1/Subfolder_with_patientID1/3.dcm
    To: /home/nponcian/Documents/folder_with_subfolders_dest/Subfolder_with_patientID1_3.dcm
Copied:
    Fr: /home/nponcian/Documents/folder_with_subfolders/Subfolder_1/Subfolder1_1/Subfolder_with_patientID1/2.dcm
    To: /home/nponcian/Documents/folder_with_subfolders_dest/Subfolder_with_patientID1_2.dcm
Copied:
    Fr: /home/nponcian/Documents/folder_with_subfolders/Subfolder_1/Subfolder1_1/Subfolder_with_patientID1/1.dcm
    To: /home/nponcian/Documents/folder_with_subfolders_dest/Subfolder_with_patientID1_1.dcm
Copied:
    Fr: /home/nponcian/Documents/folder_with_subfolders/Subfolder_3/Subfolder3_1/Subfolder_with_patientID3/3.dcm
    To: /home/nponcian/Documents/folder_with_subfolders_dest/Subfolder_with_patientID3_3.dcm
Copied:
    Fr: /home/nponcian/Documents/folder_with_subfolders/Subfolder_3/Subfolder3_1/Subfolder_with_patientID3/4.dcm
    To: /home/nponcian/Documents/folder_with_subfolders_dest/Subfolder_with_patientID3_4.dcm
Copied:
    Fr: /home/nponcian/Documents/folder_with_subfolders/Subfolder_3/Subfolder3_1/Subfolder_with_patientID3/2.dcm
    To: /home/nponcian/Documents/folder_with_subfolders_dest/Subfolder_with_patientID3_2.dcm
Copied:
    Fr: /home/nponcian/Documents/folder_with_subfolders/Subfolder_3/Subfolder3_1/Subfolder_with_patientID3/1.dcm
    To: /home/nponcian/Documents/folder_with_subfolders_dest/Subfolder_with_patientID3_1.dcm

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将多个文件移动并重命名到特定文件夹?

如何将文件夹复制到以sysdate重命名的新文件夹?

将第一个图像文件从子文件夹复制到父文件夹并重命名

如何将文件夹中的文件复制到多个文件夹中

监视文件夹并复制到新文件夹并重命名的PS脚本

Docker:将文件夹复制到多个图像

如何将一系列顺序命名的文件从多个文件夹复制到另一个文件夹?

如何将一百个文件从文件夹复制到文件夹?

如何将War文件复制到多个文件夹?

如何使用Powershell将文件从一个文件夹复制并重命名到另一个文件夹?

将文件从子文件夹复制到父文件夹并使用父文件夹名称重命名文件

重命名文件并将重命名的文件复制到主文件夹中的 subbolder

使用 PowerShell 将多个子文件夹复制到一个文件夹

如何使用文本文件中定义的文件列表将多个文件夹中的文件复制到一个公共文件夹中

如何将文件从源复制到目标并重新创建文件夹结构

从子文件夹复制文件并重命名

将文件复制到多个文件夹

如何将文件从资源内部的子文件夹复制到SpringBoot项目资源内部的另一个子文件夹

使用R将多个文件从多个文件夹复制到单个文件夹

自动将图像复制到资产文件夹

PHP将图像从url复制到文件夹

将图像复制到特定文件夹

如何将12个随机jpg复制到文件夹中并通过批处理或Powershell快速重命名(Windows 10 Spotlight相关)

如何将CSS文件从源文件夹捆绑和复制到dist文件夹?

如何将文件从特定文件夹复制到C#中的共享文件夹?

NativeScript:如何将文件从apps文件夹复制到用户可访问的文件夹?

如何将列表中的特定文件从子文件夹复制到文件夹?

Bash:如何将具有相同名称的多个文件复制到多个文件夹

如何将所有文件从txt文件的路径复制到文件夹?