Rekursives Lesen von Python-Ordnern
Diese Frage stellt sich, wenn mit einem Python-Skript gearbeitet wird, um den Inhalt von Textdateien in einer Ordnerstruktur rekursiv zu lesen. Beim ursprünglich bereitgestellten Code gab es jedoch eine Einschränkung, da er nur einen Ordner tief lesen konnte.
Problemidentifizierung
Das Problem liegt im fest codierten Pfad: outfileName = rootdir „/“ Ordner „/py-outfile.txt“. Bei diesem Pfad wird davon ausgegangen, dass sich die Zieldatei einen Unterordner unterhalb des Stammverzeichnisses befindet.
Lösung
Um diese Einschränkung zu beheben, müssen wir die Rückgabewerte von OS verstehen. walk:
Anstatt filePath = rootdir '/' file zu verwenden, sollten wir os.path.join verwenden, um root und file zu kombinieren: filePath = os.path.join(root, file). Dieser Ansatz ermöglicht es uns, korrekt durch die Ordnerhierarchie zu navigieren.
Überarbeiteter Code
Hier ist eine überarbeitete Version des Codes:
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')
Dies Der überarbeitete Code durchläuft nun rekursiv die gesamte Ordnerstruktur und schreibt den Inhalt jeder Datei in den angegebenen list_file_path.
Das obige ist der detaillierte Inhalt vonWie kann ich in Python Ordnerinhalte über eine Unterverzeichnisebene hinaus rekursiv lesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!