【问题标题】:Looping through os.walk() confusion遍历 os.walk() 混乱
【发布时间】:2014-06-25 03:18:09
【问题描述】:

我正在编写一个脚本,该脚本将抓取硬盘驱动器并收集每个文件的信息 它通过 fnmatch 和魔法相遇。

我感觉yield_files(root) 中的第一个嵌套for循环是不必要的

def yield_files(root):
    
    for root, dirs, files in os.walk(root):
        """ Is this necessary 

        for directory in dirs:
            for filename in directory:
                filename = os.path.join(root, filename)
                if os.path.isfile(filename) or os.path.isdir(filename):
                    yield FileInfo(filename)
        """

        for filename in files:
            filename = os.path.join(root, filename)
            if os.path.isfile(filename) or os.path.isdir(filename):            
                yield FileInfo(filename)
                    

os.walk() 最终会递归到这些目录吗?

【问题讨论】:

    标签: python loops python-2.7


    【解决方案1】:
    def yield_files(root):
        for root, dirs, files in os.walk(root):
            for filename in files:
                filename = os.path.join(root, filename)
                if os.path.isfile(filename) or os.path.isdir(filename):            
                    yield FileInfo(filename)
    

    这就是你所需要的。其余的确实是不必要的。 os.walk 进入子目录,因此您不需要当前目录的路径,您只需要 root 作为路径连接的基础,就像您所做的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-01
      • 2015-10-15
      • 2023-01-09
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      相关资源
      最近更新 更多