我正在开发一个脚本,它会抓取硬盘并收集每个文件的信息 它通过fnmatch和magic来遇到。
我觉得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()endup递归到这些目录中
答案 0 :(得分:3)
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
作为路径连接的基础。