根据CSV文件中的文件名列表将多个文件从网络上的文件夹复制到单个目标

时间:2019-01-16 14:24:29

标签: python pandas csv shutil

我有一个包含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'。

但是这个文件在packs文件夹中,因为我可以打印它。

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")

0 个答案:

没有答案
相关问题