Heim  >  Artikel  >  Backend-Entwicklung  >  Python3. Beispiel für das Durchsuchen eines Ordners zum Extrahieren bestimmter Dateinamen

Python3. Beispiel für das Durchsuchen eines Ordners zum Extrahieren bestimmter Dateinamen

不言
不言Original
2018-04-27 10:49:032318Durchsuche

Das Folgende ist ein Beispiel für das Durchsuchen eines Ordners zum Extrahieren eines bestimmten Dateinamens in Python 3. Es hat einen guten Referenzwert und ich hoffe, dass es für alle hilfreich sein wird. Werfen wir gemeinsam einen Blick darauf

Bei der Stapelverarbeitung von Dateien ist es oft erforderlich, einen bestimmten Pfad zu durchlaufen, um Dateinamen unter bestimmten Bedingungen zu extrahieren. Dieser Artikel beschreibt eine gewalttätige, aber sehr prägnante Methode. Es ist wirklich sehr prägnant, aber sehr gewalttätig.

Das Beispielziel ist: Den Inhalt des Ordners abrufen, dessen Name mit „_BAD“ endet, unter dem Ordner, in dem Fernerkundungsdaten gespeichert sind. Da sich unter dieser Datei viele Ebenen befinden (Jahr/Monat/Produkttyp/), gibt es viele Zielordner und diese befinden sich auf der letzten Ebene, sodass eine manuelle Überprüfung mühsam ist.

Der Code lautet wie folgt (nach Zusammenfassung der Wissenspunkte):

# -*- coding: utf-8 -*-
"""
遍历某路径下所有文件夹,获得特定文件夹下所有文件
很暴力,真的遍历了所有的文件夹
20180124
@author: 墨大宝
"""
import os
TARGETPATH = r'F:\MODIS_DATA'
records = []
for currentDir, _, includedFiles in os.walk(TARGETPATH):
 if not currentDir.endswith('_BAD'): continue
 else:
  records.append(currentDir) # 将以“_BAD”结尾的文件夹名加入records
  records.extend(includedFiles) # 将该文件夹内的文件名列表扩展到records
# 将records写入.txt
txtFile = open(os.path.join(TARGETPATH, '02_04_BAD.txt'), 'w')
txtFile.write(os.linesep.join(records))
txtFile.close()
# 将排序后的records写入.txt
with open(os.path.join(TARGETPATH, '02_04_BAD_SORTED.txt'), 'w') as txtFile:
 txtFile.write('\n'.join(sorted(records)))

os.walk () Gibt den Verzeichnisbaumgenerator zurück. Jedes Mal, wenn ein Tupel im Format (Verzeichnispfad, Verzeichnisnamen, Dateinamen) generiert wird, sind die Elemente der aktuelle Pfad, die Ordnerliste unter dem aktuellen Pfad und die Dateinamenliste unter dem aktuellen Pfad.

Die Methoden .append(), .extend() und .sort() der Liste werden an Ort und Stelle geändert, die Funktion sorted() jedoch nicht.

Wenn Sie eine Liste in eine TXT-Datei schreiben, müssen Sie die Liste direkt mit der Funktion str() konvertieren, um die Konvertierung zu erzwingen. Die Verwendung von Zeilenumbrüchen zum Verbinden jedes Elements der Liste ist unschön sehen viel besser aus.

os.path stellt das System-Neuzeilenzeichen dar, das unter Windows „rn“ und in anderen Systemen „n“ ist. Unabhängig davon, ob Sie os.path oder „n“ zum Verbinden der Listenelemente verwenden und sie schließlich mit Windows Notepad öffnen, sind die Zeilenumbrüche immer noch dieselben. Wenn Sie sie jedoch mit vs-Code öffnen, ändert sich os.path eine weitere Zeile, die den Eindruck erweckt, als gäbe es eine Zeile zwischen den Zeilen. Apropos, es könnte mit dem Schreibmechanismus von Python zusammenhängen, daher werde ich vorerst nicht näher darauf eingehen ein Loch).

In Bezug auf das Lesen und Schreiben von Dateien wird in den meisten Informationen die Form „with as“ empfohlen, die in der Tat prägnanter ist.

PS:

Ich sage, os.walk() ist gewalttätig, weil es wirklich alle Dateien im angegebenen Pfad gemäß dem Verzeichnisbaum durchläuft Bei Ordnern und Dateien wird es langsamer, wenn die Dateigröße groß ist und es nur wenige Dateinamen gibt, nach denen Sie suchen (tatsächlich glaube ich nicht, dass es viel langsamer ist, wenn Sie os.listdir() zum Schreiben verwenden). Bei einer rekursiven Funktion ist die Ausführungseffizienz möglicherweise höher, aber die Logik von os.walk () ist einfach und leicht zu schreiben. Sie können jederzeit tun, was Sie wollen, ich habe es geschafft!

Verwandte Empfehlungen:

Python-Instanz zum Löschen nicht leerer Ordner

Python-Dateien in das angegebene Verzeichnis kopieren

Wie Python den Pfad zur Programmausführungsdatei erhält

Das obige ist der detaillierte Inhalt vonPython3. Beispiel für das Durchsuchen eines Ordners zum Extrahieren bestimmter Dateinamen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn