我有一个包含DICOM男性和女性图像文件的文件夹。我也有一个带有DICOM图像文件名列表的csv文件,但仅适用于女性,没有扩展名(.pack)。 我想选择每个DICOM文件名,删除扩展名并将其与csv中的患者ID进行比较。如果它们相等,我想将该文件复制到一个新文件夹中。 我的变量的说明在下面的代码注释中指定。 出于安全原因,我故意编辑了网络路径 请协助
# -*- coding: utf-8 -*-
"""
Created on Tue Jan 16 14:25:27 2019
@author: Ama
"""
import pandas as pd
import shutil, os
#与csv中的名称匹配时要复制的文件的路径
tp = os.listdir("\\\\x.x.x.x/data/Lu/rd/Pack")
#list变量以保存文件名
tp2 = []
#文件夹中文件总数的长度
tpl = len([f for f in os.listdir("\\\\x.x.x.x/data/Lu/standard/Pack") if os.path.isfile(os.path.join("\\\\x.x.x.x/data/Lu/standard/Pack", f))])
#删除文件扩展名并将每个文件附加到新列表中
for k in range(tpl):
tp2.append(os.path.splitext(tp[k])[0])
#读取包含女性患者姓名列表的CSV文件
fp = pd.read_csv("\\\\x.x.x.x/home$/ds/fpacks.csv", header=None)
带有女性患者ID的csv列表的长度
fpl = len(fp)
#create空列表
fp2 = []
#append csv列表形成所有女性患者ID列表
for i in range(fpl):
fp2.append(fp[0][i])
#CODE复制匹配文件名 运行时出错:复制文件中的文件“ C:\ ANACONDA3 \ lib \ shutil.py”,行120 使用open(src,'rb')as fsrc:
FileNotFoundError:[错误2]没有这样的文件或目录:'194102321.pack'。
cm = 0
for z in range(fpl):
for y in range(tpl):
sfn = os.path.splitext(tp2[y])[0]
if sfn == str(fp2[z]):
print("file ", sfn, "matches female ID ", fp2[z])
shutil.copy(tp[y], '\\\\x.x.x.x/home$/ds/fpacks')
cm += 1
print("total number of ", cm , "files matched")