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:
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!