Entfernen Sie alle Dateien in einem Verzeichnis

Der Versuch, alle Dateien in einem bestimmten Verzeichnis zu entfernen, gibt mir den folgenden Fehler:

OSError: [Errno 2] No such file or directory: '/home/me/test/*' 

Der Code, den ich laufe, ist:

  • Barchart mit vertikalen Etiketten in Python / Matplotlib
  • / Usr / bin / ld: kann nicht finden -lpython2.7
  • In python, gibt es eine Möglichkeit, das Modul zu finden, das eine Variable oder ein anderes Objekt aus dem Objekt selbst enthält?
  • Python Socket Mehrere Clients
  • Führen Sie ein Shell-Skript aus Python GUI
  • Installation von scrapy auf mac - pyasn1 Verteilung nicht gefunden
  •  import os test = "/home/me/test/*" os.remove(test) 

  • Schwierigkeiten bei der Suche nach den Standardpaketen, die mit Python auf Snow Leopard ausgeliefert wurden
  • Erfassen Sie Heroku SIGTERM in Sellerie Arbeiter, um Arbeiter anmutig abzuschalten
  • Installation von scrapy auf mac - pyasn1 Verteilung nicht gefunden
  • Wie mache ich Debian-Verpackungen eines Python-Pakets?
  • Warum ist 'True == not False' ein Syntaxfehler in Python?
  • Python-Code, um einen ssh auf Remote-Server zu etablieren und dann eine Verbindung zu MYSQL
  • 10 Solutions collect form web for “Entfernen Sie alle Dateien in einem Verzeichnis”

    os.remove() funktioniert nicht in einem Verzeichnis, und os.rmdir() funktioniert nur in einem leeren Verzeichnis. Und Python wird nicht automatisch erweitern "/ home / me / test / *" wie einige Shells tun.

    Sie können also shutil.rmtree() im Verzeichnis verwenden, um dies zu tun.

     import shutil shutil.rmtree('/home/me/test') 

    Sei vorsichtig, da es die Dateien und die Unterverzeichnisse auch entfernt.

    Os.remove löst keine Unix-Style-Muster auf. Wenn Sie auf einem Unix-ähnlichen System sind, können Sie:

     os.system('rm '+test) 

    Sonst können Sie:

     import glob, os test = '/path/*' r = glob.glob(test) for i in r: os.remove(i) 

    Weil das * ein Shell-Konstrukt ist. Python sucht buchstäblich nach einer Datei namens "*" im Verzeichnis / home / me / test. Verwenden Sie listdir, um eine Liste der Dateien zuerst zu erhalten, und rufen Sie dann auf jedem auf.

    Ein anderer Weg habe ich getan:

     os.popen('rm -f ./yourdir') 

    Stern wird von Unix-Shell erweitert. Ihr Anruf ist nicht auf Shell zugreifen, es ist nur versuchen, eine Datei mit dem Namen zu entfernen, der mit dem Stern endet

    Os.remove wird nur eine einzelne Datei entfernen.

    Um mit Wildcards zu entfernen, musst du deine eigene Routine schreiben, die das behandelt.

    Es gibt einige Vorschläge, die auf dieser Forumseite aufgeführt sind.

    Shutil.rmtree () für die meisten Fälle. Aber es funktioniert nicht für in Windows für readonly Dateien. Für Windows importiere win32api und win32con Module von PyWin32.

     def rmtree(dirname): retry = True while retry: retry = False try: shutil.rmtree(dirname) except exceptions.WindowsError, e: if e.winerror == 5: # No write permission win32api.SetFileAttributes(dirname, win32con.FILE_ATTRIBUTE_NORMAL) retry = True 

    Bitte beachten Sie hier meine Antwort:

    https://stackoverflow.com/a/24844618/2293304

    Es ist eine lange und hässliche, aber zuverlässige und effiziente Lösung.

    Es löst einige Probleme auf, die von den anderen Beantwortlichen nicht angesprochen werden:

    • Es behandelt korrekt symbolische Links, auch nicht rufen shutil.rmtree() auf einem symbolischen Link (die übergeben wird die os.path.isdir() Test, wenn es Links zu einem Verzeichnis).
    • Es behandelt schreibgeschützte Dateien schön.
     #python 2.7 import tempfile import shutil import exceptions import os def TempCleaner(): temp_dir_name = tempfile.gettempdir() for currentdir in os.listdir(temp_dir_name): try: shutil.rmtree(os.path.join(temp_dir_name, currentdir)) except exceptions.WindowsError, e: print u'Не удалось удалить:'+ e.filename 

    Obwohl dies eine alte Frage ist, denke ich, dass keiner bereits mit diesem Ansatz geantwortet hat:

     #python 2.7 import os filesToRemove = [f for f in os.listdir('/home/me/test')] os.remove(f) for f in files 
    Python ist die beste Programmiersprache der Welt.