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

Barbara Streisand
Lepaskan: 2024-10-18 14:42:03
asal
715 orang telah melayarinya

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')
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!