首页 >后端开发 >Python教程 >如何在Python中递归读取超过一级子目录的文件夹内容?

如何在Python中递归读取超过一级子目录的文件夹内容?

Barbara Streisand
Barbara Streisand原创
2024-10-18 14:42:03851浏览

How to Recursively Read Folder Contents Beyond One Subdirectory Level in Python?

Python 递归文件夹读取

使用 Python 脚本递归读取文件夹结构中文本文件的内容时会出现此问题。然而,提供的初始代码遇到了只能读取一个文件夹深度的限制。

问题识别

问题在于硬编码路径:outfileName = rootdir "/"文件夹“/py-outfile.txt”。此路径假设目标文件位于根目录下的一个子文件夹。

解决方案

要解决此限制,我们需要了解 os. walk:

  • root:当前正在处理的路径。
  • subdirs:root 中的子目录列表。
  • files:非目录文件列表root.

我们应该使用 os.path.join 来组合 root 和文件,而不是使用 filePath = rootdir '/' 文件: filePath = os.path.join(root, file)。这种方法使我们能够正确地浏览文件夹层次结构。

修订后的代码

这是代码的修订版本:

import os
import sys

walk_dir = sys.argv[1]

print('walk_dir = ' + walk_dir)

# Convert to absolute path (recommended if the working directory may change during execution)
walk_dir = os.path.abspath(walk_dir)
print('walk_dir (absolute) = ' + os.path.abspath(walk_dir))

for root, subdirs, files in os.walk(walk_dir):
    print('--\nroot = ' + root)
    list_file_path = os.path.join(root, 'my-directory-list.txt')
    print('list_file_path = ' + list_file_path)

    with open(list_file_path, 'wb') as list_file:
        for subdir in subdirs:
            print('\t- subdirectory ' + subdir)

        for filename in files:
            file_path = os.path.join(root, filename)
            print('\t- file %s (full path: %s)' % (filename, file_path))

            with open(file_path, 'rb') as f:
                f_content = f.read()
                list_file.write(('The file %s contains:\n' % filename).encode('utf-8'))
                list_file.write(f_content)
                list_file.write(b'\n')

This修改后的代码现在将递归遍历整个文件夹结构并将每个文件的内容写入指定的list_file_path。

以上是如何在Python中递归读取超过一级子目录的文件夹内容?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn