2016-11-12 2 views
1

Können Sie mir helfen, wie kann ich alle Dateien unter den Windows/Temp-Dateien löschen? Unten sind meine Skripte, aber es funktioniert überhaupt nicht.Löschen von Windows Temp-Dateien mit Python-Skript

import os 
import subprocess 
recPath = 'C:\\Windows\\Temp' 
ls = [] 
if os.path.exists(recPath): 
    for i in os.listdir(recPath): 
     ls.append(os.path.join(recPath, i)) 
else: 
    print 'Please provide valid path!' 

paths = ' '.join(ls) 
pObj = subprocess.Popen('rmdir C:\\Windows\\Temp\\*.* /s /q *.*'+paths, shell=True, stdout = subprocess.PIPE, stderr= subprocess.PIPE) 
rTup = pObj.communicate() 
rCod = pObj.returncode 
if rCod == 0: 
    print 'Success: Cleaned Windows Temp Folder' 
else: 
    print 'Fail: Unable to Clean Windows Temp Folder' 

Vielen Dank im Voraus.

+0

was bedeutet 'nicht funktioniert'? Wir können nicht in Gedanken lesen. Erhalten Sie eine Fehlermeldung? Zeige immer die vollständige Nachricht an. – furas

+0

Hallo. Entschuldigung für die Verwirrung. Übrigens, es gibt keine Fehlermeldung nach der Ausführung im Befehl. – user2926827

+0

rmdir ist das Mittel zum Entfernen des Verzeichnisses, Sie könnten stattdessen mit Befehl del versuchen, auch brauchen Sie möglicherweise nicht die Pfade, da Sie planen, alle Dateien zu entfernen, versuchen 'del C: \\ Windows \\ Temp \\ *. */S/q ' – Skycc

Antwort

3

mit dem Windows-Befehl del alle Dateien im Verzeichnis mit Wildcard zu entfernen. Dadurch werden alle Dateien rekursiv innerhalb sie löschen, aber es wird die leere Unterordner dort unten gesamten Verzeichnisstruktur von Windows \ Temp.This

import os, subprocess 
del_dir = r'c:\windows\temp' 
pObj = subprocess.Popen('del /S /Q /F %s\\*.*' % del_dir, shell=True, stdout = subprocess.PIPE, stderr= subprocess.PIPE) 
rTup = pObj.communicate() 
rCod = pObj.returncode 
if rCod == 0: 
    print 'Success: Cleaned Windows Temp Folder' 
else: 
    print 'Fail: Unable to Clean Windows Temp Folder' 

Änderung der 1. Zeile verlassen löschen alles entfernen umfassen den Ordner Temp selbst wenn Erfolg, neu übergeordnetes Verzeichnis danach

del_dir = r'c:\windows\temp' 
pObj = subprocess.Popen('rmdir /S /Q %s' % del_dir, shell=True, stdout = subprocess.PIPE, stderr= subprocess.PIPE) 
# recreate the deleted parent dir in case it get deleted 
os.makedirs(del_dir) 

Else, rmtree von shutil eine ziemlich gute Wahl sein sollte, IGNORE_ERRORS setzt alle Fehler in der Mitte zu ignorieren und bis all Verzeichnisbaum komplett

import shutil, os 
del_dir = r'c:\windows\temp' 
shutil.rmtree(del_dir, ignore_errors=True) 
# recreate the deleted parent dir in case it get deleted 
os.makedirs(del_dir) 
weiter

Eine weitere Option Verzeichnis iterieren zu

import os,shutil 
del_dir = r'c:\windows\temp' 
for f in os.listdir(del_dir): 
    if os.path.isfile(f): 
     os.remove(f) 
    elif os.path.isdir(f) 
     shutil.rmtree(f, ignore_errors=True) 

Änderung der del_dir entsprechend in ein beliebiges Verzeichnis von Interesse

Sie sind den Umgang mit Windows-Ordner gelöscht werden, passen sie auf das Verzeichnis gesetzt sorgfältig zu löschen, Sie möchte nicht irrtümlicherweise del_dir = r'c setzen: \ windows '

+0

Hallo Skycc. Danke Mann für den Code. Es löschte jedoch nicht alle Ordner und Unterordner in Windows \ Temp. – user2926827

+0

versuche das rmdir cmd ich gerade hinzugefügt, eigentlich die shuttil cmd mit ignore_errors auf True gesetzt sollte funktionieren, wird es versuchen zu löschen, was auch immer es löschen kann enthalten leere Unterordner verlassen diese nicht zu löschen hinter – Skycc

+1

Hallo Skycc.Thanks viel Männer. Es funktioniert perfekt :) – user2926827

0

Verwenden Sie shutil.

import shutil 

shutil.rmtree(r"C:\Windows\Temp") 
+0

Hallo Batman. Danke für Ihre Hilfe. nachdem du den Code, den du gegeben hast, ausprobiert hast. Es löschte einige Dateien, aber nicht alle Dateien und Ordner im Ordner Windows \ temp. – user2926827

+0

Seltsam. Was passiert, wenn Sie 'os.unlink (Pfad)' auf einer der verbleibenden Dateien aufrufen? – Batman

+0

Ich vermute, Sie haben keine Berechtigung, alle Dateien in Temp zu entfernen, einige werden möglicherweise verwendet. Versuchen Sie, wenn Sie in der Lage sind, das manuell zu entfernen – Skycc

0

Sie könnten den Pfad fest codieren wollen.

import os 
    import shutil 
    del_dir = r'C:\Windows\Temp' 
    for f in os.listdir(del_dir): 
     if os.path.isfile(r'C:\Windows\Temp\\'+f): 
      os.remove(r'C:\Windows\Temp\\'+f) 
     elif os.path.isdir(r'C:\Windows\Temp\\'+f): 
      shutil.rmtree(r'C:\Windows\Temp\\'+f, ignore_errors=True) 
Verwandte Themen