无法使用Python for循环列出文件

时间:2016-01-10 11:52:22

标签: python file for-loop

我刚刚离开了LPTHW而且我试图通过重命名脚本弄脏手。

我在尝试列出目录中的文件时遇到问题,代码是:

def rename_files():
    for root, dirs, files in os.walk(path):
        dirs_len = len(dirs)
        for i in range(0, dirs_len):
            print dirs[i]

以上代码将按预期正确显示目录列表。 但是,做这样的事情:

    for root, dirs, files in os.walk(path):
        dirs_len = len(dirs)
        for i in range(0, dirs_len):
            print dirs[i]
            print files

将导致每个目录下的空列表。

我通过创建files_len并将其放置在嵌套的for循环中进行实验:

    for root, dirs, files in os.walk(path):
        dirs_len = len(dirs)
        files_len = len(files)
        for i in range(0, dirs_len):
            print dirs[i]
            print files_len

它导致0.

如果我将files_len放在第一个for循环中,则会产生3,这是目录中正确的文件数。

我希望它能打印出像:

我的照片

  • img1.png
  • img2.png

而我无法弄清楚如何构建我的代码以使其按照我的意愿运行。

你能指出我正确的方向吗?

非常感谢,非常感谢!

CNC中 这里的最终目标是查看每个目录,接收raw_input以更改文件名,一旦到达最后一个文件,移动到下一个目录,冲洗并重复。

例如:

Dir1中

- >重命名img1.png:img_1.png(< - raw_input)

- >重命名img2.png:img_2.png(< - raw_input)

- >重命名img3.png:img_3.png(< - raw_input)

Dir2中

- >重命名img1.png:img_1.png(< - raw_input)

- >重命名img2.png:img_2.png(< - raw_input)

- >重命名img3.png:img_3.png(< - raw_input)

依此类推,直到到达最后一个目录中的最后一个文件。

3 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情

for root, dirs, files in os.walk(path):
    print("%s:" % root)
    for f in files:
        print ("-> %s" % f)

这将输出

我的照片:

- > img1.png

- > img2.png

SomeOtherFolder:

- > someotherfile.txt

...

答案 1 :(得分:0)

此代码对我有用:

@candidate = Candidate.find 1
@jobs      = @candidate.candidate_jobs

答案 2 :(得分:0)

os.walk函数从顶部开始遍历所有文件夹。您不必手动迭代它返回的目标,因为它只是当前'根目录中的目录列表。文件夹,而'文件'是当前' root'中的文件列表。文件夹。
因此,这应该做你想要的:

for root, dirs, files in os.walk( path ):
    print( "Root: %s\nTotal Files:%i" % ( root, len( files )))
    for file in files:
        print( "\t%s" % file )