Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Membaca Kandungan Folder Secara Rekursif Melebihi Satu Tahap Subdirektori dalam Python?

Bagaimana untuk Membaca Kandungan Folder Secara Rekursif Melebihi Satu Tahap Subdirektori dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-10-18 14:42:03809semak imbas

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

Python Recursive Folder Read

Soalan ini timbul apabila bekerja dengan skrip Python untuk membaca secara rekursif kandungan fail teks dalam struktur folder. Walau bagaimanapun, kod awal yang diberikan menghadapi had membaca hanya satu folder dalam.

Pengenalpastian Masalah

Isunya terletak pada laluan berkod keras: outfileName = rootdir "/" folder "/py-outfile.txt". Laluan ini menganggap bahawa fail sasaran terletak satu subfolder di bawah direktori akar.

Penyelesaian

Untuk menangani had ini, kita perlu memahami nilai pulangan os. walk:

  • root: Laluan semasa sedang diproses.
  • subdir: Senarai subdirektori dalam root.
  • fail: Senarai fail bukan direktori dalam root.

Daripada menggunakan fail filePath = rootdir '/', kita harus menggunakan os.path.join untuk menggabungkan akar dan fail: filePath = os.path.join(root, file). Pendekatan ini membolehkan kami menavigasi dengan betul melalui hierarki folder.

Kod Disemak

Berikut ialah versi kod yang disemak semula:

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')

Ini kod yang disemak kini akan merentasi keseluruhan struktur folder secara rekursif dan menulis kandungan setiap fail ke list_file_path yang ditentukan.

Atas ialah kandungan terperinci Bagaimana untuk Membaca Kandungan Folder Secara Rekursif Melebihi Satu Tahap Subdirektori dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn