Bagaimana untuk Melintasi Struktur Folder Secara Rekursif untuk Membaca Kandungan Fail Teks dalam Python?

Patricia Arquette
Lepaskan: 2024-10-18 14:36:44
asal
677 orang telah melayarinya

How to Recursively Traverse a Folder Structure to Read Text File Contents in Python?

Bacaan Folder Rekursif Python: Mengatasi Penerokaan Cetek

Dalam bidang pengaturcaraan, selalunya mencabar untuk menavigasi struktur hierarki kompleks dengan cekap. Bagi peminat Python yang sedang berkembang dengan latar belakang C /Obj-C, melintasi struktur folder secara rekursif untuk membaca kandungan fail teks boleh menimbulkan halangan yang menggerunkan.

Mari kita mendalami kod yang anda berikan untuk memahami batasan yang menghalang pengulangannya melebihi kedalaman folder tunggal:

<code class="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()</code>
Salin selepas log masuk

Penyebabnya terletak pada laluan berkod keras untuk filePath:

<code class="python">filePath = rootdir + '/' + file</code>
Salin selepas log masuk

Kod ini menganggap kedalaman tetap satu folder, menghalangnya daripada betul mengekstrak laluan fail dalam folder bersarang. Untuk membetulkan isu ini, kami perlu memasukkan nilai akar semasa, yang menyediakan laluan folder yang sedang diulang:

<code class="python">filePath = os.path.join(root, file)</code>
Salin selepas log masuk

Dengan menggunakan os.path.join, kami membina laluan fail penuh yang tepat, membenarkan kod untuk meneroka semua peringkat struktur folder dengan jayanya.

Selain itu, adalah bijak untuk menggunakan pernyataan dengan untuk mengendalikan operasi fail, yang memastikan penutupan fail automatik, meningkatkan kebolehbacaan kod dan mengurangkan potensi kebocoran sumber.

Berikut ialah versi semakan kod yang menangani isu ini:

<code class="python">import os
import sys

walk_dir = sys.argv[1]

print('walk_dir = ' + walk_dir)

# Converting to absolute path ensures portability
walk_dir = os.path.abspath(walk_dir)
print('walk_dir (absolute) = ' + 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')</code>
Salin selepas log masuk

Dengan pengubahsuaian ini, kod Python anda akan

Atas ialah kandungan terperinci Bagaimana untuk Melintasi Struktur Folder Secara Rekursif untuk Membaca Kandungan Fail Teks 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!