我在os.walk()

时间:2019-05-24 03:04:21

标签: os.walk

代码:


def return_dcm(file_path, check_term = 'Prostate'):
    # Read all DCM (slices) files within a directory and order the files based on filename
    out_dcm = {}
    for dirName, subdirList, fileList in os.walk(file_path):
        c_dcm = []
        cur_name = ""
        dir_split = dirName.split("/")
        for f_chk in dir_split:
            if check_term in f_chk:
                cur_name = f_chk
        for filename in fileList:
            if ".dcm" in filename.lower():
                name = int(os.path.splitext(filename)[0])
                c_dcm.append((os.path.join(dirName,filename), name))
        if len(c_dcm) > 0:
            c_dcm = sorted(c_dcm, key = lambda t: t[1]) # Sort into correct order
            out_dcm[cur_name] = [c[0] for c in c_dcm]   # Store in dictionary
    return out_dcm



d_dcm = return_dcm('./../data/train/')

在尝试浏览几个文件夹时,os.walk()出现了一个奇怪的错误。所以这是我现在导航到的文件的文件夹结构:

data\train\Prostate-3T\Prostate3T-01-0001\03-15-2003-MR prostaat kanker detectiemc MCAPRODET-79232\2-t2tsetra-49698

我正在使用调试器来查看此代码。基本上,问题似乎出在dirName上。我在第一次迭代时就这样开始就很好了(我在说第一个for循环):

./../data/train/

第二次迭代也可以:

./../data/train/Prostate-3T

但是在第三次迭代中发生了一些奇怪的事情:

./../data/train/Prostate-3T\\Prostate3T-01-0001

请注意,如何代替添加“ /”,而是添加双反斜杠来分隔Prostate-3T和Prostate3T-01-0001 在此之后的所有迭代中也会发生这种情况

这显然会在以后弄乱代码,因为使用了它:

dir_split = dirName.split("/")

有人知道为什么会这样以及如何解决吗?

(PS:与以上内容无关,但此代码不是我的,可以在这里找到:https://github.com/jancio/3D-U-Net-Prostate-Segmentation

0 个答案:

没有答案