非递归的os.walk()

51 投票
6 回答
30438 浏览
提问于 2025-04-16 06:42

我想找一种方法,可以像 os.listdir() 那样不使用递归地遍历文件夹,但我需要返回的结果格式和 os.walk() 一样。有没有什么好主意?

提前谢谢你。

6 个回答

6

我稍微调整了一下,给出一个更灵活的解决方案:

for root, dirs, files in os.walk(path):  
    if not recursive:  
        while len(dirs) > 0:  
            dirs.pop()  

    //some fancy code here using generated list

补充说明:修复了if/while的问题。感谢, @Dirk van Oosterbosch :}

62

在文件名的循环后面加一个 break

for root, dirs, filenames in os.walk(workdir):
    for fileName in filenames:
        print (fileName)
    break   #prevent descending into subfolders

这样做是有效的,因为默认情况下,os.walk 会先列出你请求的文件夹里的文件,然后再进入子文件夹。

43

在编程中,有时候我们需要处理一些复杂的任务,比如同时运行多个程序或者处理大量的数据。这时候,就需要用到“并发”这个概念。简单来说,并发就是让多个任务同时进行,虽然它们可能不是完全同时执行,但看起来就像是同时在进行。

想象一下,你在厨房里做饭。你可以一边煮汤,一边切菜,这样就能更快地完成晚餐。这里,煮汤和切菜就是两个并发的任务。虽然你不能同时用两只手做这两件事,但你可以在等待汤煮好的时候去切菜,这样就提高了效率。

在计算机中,并发可以通过多线程或异步编程来实现。多线程就像是你在厨房里有几个助手,每个人负责不同的任务。而异步编程则像是你在做其他事情的时候,等着某个任务完成,比如等水烧开。

总之,并发让我们能够更有效率地完成多个任务,特别是在处理复杂的程序时,它能帮助我们节省时间和资源。

next(os.walk(...))

撰写回答