首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我能理解os.walk吗?

我能理解os.walk吗?
EN

Stack Overflow用户
提问于 2019-03-08 05:27:48
回答 2查看 0关注 0票数 0

root,dir,file的循环是os.walk(startdir)通过这些步骤工作的吗?

代码语言:javascript
复制
for root in os.walk(startdir) 
    for dir in root 
        for files in dir
  1. 获取root或启动dir:C:u1 starts2
  2. 获取C:\ dir1 \ dir2 \ startdir中的文件夹并返回文件夹列表“dirlist”
  3. 获取第一个dirlist项目中的文件并返回文件列表“filelist”作为文件列表列表的第一项。
  4. 移动到dirlist中的第二个项目并返回此文件夹“filelist2”中的文件列表作为文件列表列表的第二项。等等
  5. 移动到foldertree的下一个根,从2开始。

对?或者它首先得到所有的根,然后所有的dirs第二和所有文件第三?

EN

回答 2

Stack Overflow用户

发布于 2019-03-08 14:03:32

简单来说,os.walk()将生成路径,文件夹,文件存在于给定路径中的元组,并将继续遍历子文件夹。

代码语言:javascript
复制
import os.path
path=input(" enter the path\n")
for path,subdir,files in os.walk(path):
   for name in subdir:
       print os.path.join(path,name) # will print path of directories
   for name in files:    
       print os.path.join(path,name) # will print path of files

这将生成子目录中所有子目录,文件和文件的路径

票数 0
EN

Stack Overflow用户

发布于 2019-03-08 15:09:56

这是一个简短的例子,说明os.walk()如何使用一些os函数进行一些解释。

首先请注意,os.walk()返回三个项目,根目录,dirs当前根目录下方的目录列表()以及在这些目录中找到的文件列表。该文档将为您提供更多信息。

dirs将包含根目录下方的目录列表,文件将包含在这些目录中找到的所有文件的列表。在下一次迭代中,前一个dirs列表中每个目录的每个目录将root依次承担角色,搜索将从那里继续,只有在搜索到当前级别后才会进入某个级别。

代码示例:这将搜索,计算和打印指定搜索目录(您的根)下面的文件名.jpg.gif文件。这也使得使用的os.path.splitext()函数从它的延伸和文件的基础分开os.path.join()函数来给你的全名,包括找到的图像文件的路径。

代码语言:javascript
复制
import os

searchdir = r'C:\your_root_dir'  # your search starts in this directory (your root) 

count = 0
for root, dirs, files in os.walk(searchdir):
    for name in files:
        (base, ext) = os.path.splitext(name) # split base and extension
        if ext in ('.jpg', '.gif'):          # check the extension
            count += 1
            full_name = os.path.join(root, name) # create full path
            print(full_name)

print('\ntotal number of .jpg and .gif files found: %d' % count)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档