@ slh2080: Das Posten von "Gelöst" ist nicht das, was Sie auf dieser Site tun. Wählen Sie die Antwort aus, die Sie tatsächlich verwendet haben, und klicken Sie auf das Häkchen, um anzuzeigen, dass das Problem dadurch behoben wurde.
S.Lott
1
Es tut uns leid. Vielen Dank, dass Sie auf meinen Fehler hingewiesen haben. Es sind keine Hausaufgaben, nur Python in meiner Freizeit zu lernen. Ich habe auf die Antwort geklickt, die ich verwendet habe, aber das war, bevor ich die Antwort von ghostdog74 sah.
Ihr erstes Beispiel ist die Verwendung von redundanten for-Schleifen. Sie können mit - [os.remove (f) für f in os.listdir (".") Durchgehen, wenn f.endswith (". Bak")] - als Listenverständnis verwendet werden soll. Oder Sie können das 'if' im Verständnis in die for-Schleife verschieben - für f in os.listdir ("."): If f.endswith (". Bak"): os.remove (f)
dragonjujo
@ slh2080 Da Sie sagen, dass das Problem behoben wurde, markieren Sie die Antwort als die richtige Antwort.
blwy10
5
Achten Sie auf die os.listdir (".") !!! Ich habe diesen Code verwendet und vergessen, den Pfad zu ändern, mein gesamter Code war weg !!! Versuchte zwei verschiedene Dienstprogramme, um sich zu erholen, aber ohne Glück !!
Lei Guo
@LeiGuo Das wurde behoben.
yugr
26
Verwenden Sie os.chdirdiese Option , um das Verzeichnis zu wechseln. Verwenden glob.globSie diese Option, um eine Liste mit Dateinamen zu erstellen, die mit '.bak' enden. Die Elemente der Liste sind nur Zeichenfolgen.
Dann können Sie os.unlinkdie Dateien entfernen. (PS. os.unlinkUnd os.removesind Synonyme für die gleiche Funktion.)
#!/usr/bin/env pythonimport glob
import os
directory='/path/to/dir'
os.chdir(directory)
files=glob.glob('*.bak')for filename in files:
os.unlink(filename)
In Python 3.5 os.scandirist es besser, wenn Sie nach Dateiattributen oder -typen suchen müssen - siehe os.DirEntryEigenschaften des Objekts, das von der Funktion zurückgegeben wird.
import os
for file in os.scandir(path):if file.name.endswith(".bak"):
os.unlink(file.path)
Dies erfordert auch kein Ändern der Verzeichnisse, da jedes DirEntrybereits den vollständigen Pfad zur Datei enthält.
Meiner Meinung nach keine gute Wahl. Es ist nicht tragbar und aufgrund des zusätzlichen Teilprozesses wahrscheinlich teurer. Besser Python-APIs verwenden.
Haakon
0
Mir ist klar, dass das alt ist; Hier erfahren Sie jedoch, wie Sie dies nur mit dem OS-Modul tun können ...
def purgedir(parent):for root, dirs, files in os.walk(parent):for item in files:# Delete subordinate files
filespec = os.path.join(root, item)if filespec.endswith('.bak'):
os.unlink(filespec)for item in dirs:# Recursively perform this operation for subordinate directories
purgedir(os.path.join(root, item))
shutil.rmtree(path)
kann verwendet werden .Antworten:
Über
os.listdir
undos.remove
:Oder über
glob.glob
:Stellen Sie sicher, dass Sie sich im richtigen Verzeichnis befinden und eventuell verwenden
os.chdir
.quelle
Verwenden Sie
os.chdir
diese Option , um das Verzeichnis zu wechseln. Verwendenglob.glob
Sie diese Option, um eine Liste mit Dateinamen zu erstellen, die mit '.bak' enden. Die Elemente der Liste sind nur Zeichenfolgen.Dann können Sie
os.unlink
die Dateien entfernen. (PS.os.unlink
Undos.remove
sind Synonyme für die gleiche Funktion.)quelle
In Python 3.5
os.scandir
ist es besser, wenn Sie nach Dateiattributen oder -typen suchen müssen - sieheos.DirEntry
Eigenschaften des Objekts, das von der Funktion zurückgegeben wird.Dies erfordert auch kein Ändern der Verzeichnisse, da jedes
DirEntry
bereits den vollständigen Pfad zur Datei enthält.quelle
if file.name.endswith(".bak"):
Sie können eine Funktion erstellen. Fügen Sie maxdepth hinzu, wie Sie möchten, um Unterverzeichnisse zu durchlaufen.
quelle
Erst global , dann Verknüpfung aufheben .
quelle
Unter Linux und MacOS können Sie einen einfachen Befehl für die Shell ausführen:
quelle
Mir ist klar, dass das alt ist; Hier erfahren Sie jedoch, wie Sie dies nur mit dem OS-Modul tun können ...
quelle