Python递归文件夹读取

我有C ++ / Obj-C背景,而我刚发现Python(大约写了一个小时)。我正在编写一个脚本,以递归方式读取文件夹结构中文本文件的内容。


我的问题是我编写的代码仅适用于一个文件夹较深的地方。我可以看到为什么在代码中(请参阅参考资料#hardcoded path),我只是不知道如何继续使用Python,因为我的经验仅仅是全新的。


Python代码:


import os

import sys


rootdir = sys.argv[1]


for root, subFolders, files in os.walk(rootdir):


    for folder in subFolders:

        outfileName = rootdir + "/" + folder + "/py-outfile.txt" # hardcoded path

        folderOut = open( outfileName, 'w' )

        print "outfileName is " + outfileName


        for file in files:

            filePath = rootdir + '/' + file

            f = open( filePath, 'r' )

            toWrite = f.read()

            print "Writing '" + toWrite + "' to" + filePath

            folderOut.write( toWrite )

            f.close()


        folderOut.close()


紫衣仙女
浏览 743回答 3
3回答

慕容708150

如果您使用的是Python 3.5或更高版本,则可以在1行中完成此操作。import globfor filename in glob.iglob(root_dir + '**/*.txt', recursive=True):     print(filename)如文档中所述如果递归为true,则模式**将匹配任何文件以及零个或多个目录和子目录。如果需要每个文件,可以使用import globfor filename in glob.iglob(root_dir + '**/*', recursive=True):     print(filename)
打开App,查看更多内容
随时随地看视频慕课网APP