Python os.walk如何与break语句一起工作?

Python os.walk如何与break语句一起工作?,python,for-loop,break,os.walk,Python,For Loop,Break,Os.walk,我有以下代码 for i,v in df_activity.iterrows(): folder = v["HDFS Location"].split('/')[-1] print(i) rootdir = '/home/gpumodel/simulation_26_aug/' + folder for subdir, dirs, files in os.walk(rootdir): for file in files: i

我有以下代码

for i,v in df_activity.iterrows():
    folder = v["HDFS Location"].split('/')[-1]
    print(i)
    rootdir = '/home/gpumodel/simulation_26_aug/' + folder
    for subdir, dirs, files in os.walk(rootdir):
        for file in files:
            if file.endswith(".json"):
                print(subdir)
                ......
                ......(some process)
                if condition:
                    index_viz_from.append(minval)
                    index_viz_to.append(maxval)
                    break
                break
我的文件夹路径有点像这样

/home/gpumodel/simulation_26_aug/Khopoli_1/FibreShot/2019-08-28/1/10
文件夹中的文件如下所示

part-00000-d57261c3-e707-4a76-b84c-6576741ecaa2-c000.json  part-00000-e65e0c7e-dfb1-4ca6-b622-17ef8622da04-c000.json  part-00000-e68fa877-4bff-4bff-aecb-c9cc0847c7db-c000.json  _SUCCESS
我想知道上面的代码是如何工作的。据我所知,代码递归地运行,直到json文件存在,当它处理一个json文件时,首先遇到
break
语句,然后从
for in files
退出,然后再转到
for subdir,dirs,files in os.walk(rootdir):
或转到第二个
break
语句

从程序的工作方式,转到os.walk(rootdir)中subdir、dir和文件的
。为什么它不转到秒
break
station。这是不是因为给了我们一个提示?如果
break
之前有一个缩进,加工会有所不同吗

我的代码输出如下:

/home/gpumodel/simulation_26_aug/Khopoli_46/FibreShot/2019-08-29/1/10

/home/gpumodel/simulation_26_aug/Khopoli_47/FibreShot/2019-08-29/1/11

/home/gpumodel/simulation_26_aug/Khopoli_47/FibreShot/2019-08-29/1/10

/home/gpumodel/simulation_26_aug/Khopoli_48/FibreShot/2019-08-29/1/11

老实说,if语句中的
break
是多余的。您不需要它,因为在if语句之后,您会立即中断。如果删除if语句中的
break
,代码的工作方式应该完全相同


另外,
break
只影响循环,而不影响if语句。你不会“打破if语句”<代码>中断使您脱离当前循环。它会过早地停止当前的大多数本地循环,不管它是什么。

所以first break语句将我从“for file in files”中带出来,并转到第二个for loop ryt?按照您的代码编写方式,两个
break
语句中的任何一个(if语句中的第一个,或第二个)将带您离开文件中文件的
循环,进入操作系统中文件的
循环。walk(rootdir)
循环。