无操作系统的Python递归目录读取。

2024-10-01 07:46:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图遍历目录树,并通过定义递归函数(而不是使用手术室步行)在Python中。在

import os

def walkfn(dirname):
    if os.path.exists('output'):
        file1 = open('output')
        for line in file1:
            if line.startswith('Final value:'):
                print line
    else:
        for name in os.listdir(dirname):
            path = os.path.join(dirname, name)
            if os.path.isdir(path):
                print "'", name, "'"
                newdir = os.chdir(path)
                walkfn(newdir)

cwd = os.getcwd()
walkfn(cwd)

我得到以下错误:

^{pr2}$

Tags: pathnamein目录foroutputifos
1条回答
网友
1楼 · 发布于 2024-10-01 07:46:33

os.chdir()返回None,而不是新的目录名。将该结果传递给递归的walkfn()函数,然后传递给os.listdir()。在

不需要赋值,只需将path传递给walkfn()

for name in os.listdir(dirname):
    path = os.path.join(dirname, name)
    if os.path.isdir(path):
        print "'", name, "'"
        os.chdir(path)
        walkfn(path)

您通常希望避免更改目录;如果代码使用绝对路径,则无需执行以下操作:

^{pr2}$

相关问题 更多 >