os.walk 陷入无限循环

use*_*693 5 python os.walk infinite-loop

我正在尝试编写一个脚本,该脚本可以浏览目录并使用指定的标头信息来识别 DICOM 文件。找到满足条件的文件后,我想将该文件的目录添加到列表中(如果尚未添加)。

import dicom
import os
import os.path
import re

param = "PatientID"
val = "7rAgWJ."
rootDir = "C:\\work\\SJM\\WRIX"

dirs = []
i = 0

for subdir, dirs, files in os.walk(rootDir, topdown = True):
    for f in files:
        try:
            f = os.path.join(subdir, f)
            ds = dicom.read_file(f)
            attr = getattr(ds, param)
            if attr == val:
                cur = os.path.dirname(os.path.realpath(f)) 
                if cur not in dirs:
                    dirs.append(cur);
Run Code Online (Sandbox Code Playgroud)

我的问题是我的代码永远不会终止,因为我的外部 for 循环连续运行。该循环循环遍历 C:\work\SJM\WRIX\ 中的一个目录中的文件,但永远不会“移动”到下一个文件夹。

谢谢!

Joe*_*ett 3

您正在修改dirs,它用于os.walk确定下一步要递归到哪个目录。创建一个单独的变量来存储结果。