2016-11-12 6 views
1

Можете ли вы мне помочь, как я могу удалить все файлы под файлами Windows/Temp? Ниже приведены мои сценарии, но это не работает вообще.Удаление файлов Windows Temp с использованием сценария python

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' 

Заранее спасибо.

+0

что означает 'не работает'? Мы не можем читать в вашем уме. Появляется ли сообщение об ошибке? Всегда показывайте полное сообщение. – furas

+0

привет. извинения за путаницу. btw, после того, как я выполнил команду, нет сообщения об ошибке. – user2926827

+0

rmdir является средним для удаления каталога, вы можете попробовать с помощью команды del вместо этого, также вам могут не понадобиться пути, так как вы планируете удалить все файлы, попробуйте 'del C: \\ Windows \\ Temp \\ *. */S/q ' – Skycc

ответ

3

с помощью команды окон дель удалить все файлы в директории с групповым символом . Это удалит все файлы рекурсивно в нем, однако он оставит пустую папку там

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' 

изменить 1-я строку ниже, чтобы удалить все дерево каталогов Windows \ Temp.This удалит все включает папку Temp себя, если успех, воссоздать родительский каталог после

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 из shutil должен быть очень хороший выбор, ignore_errors набор игнорировать все ошибки в средней и продолжайте, пока все дерево каталогов полного

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) 

Другой вариант перебрать каталог будет удален

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) 

Смените del_dir соответственно в любой каталог интересующей

Вы имеете дело с папкой окна, берегитесь, чтобы установить каталог тщательно удалить, вы не хотел бы ошибочно поместить del_dir = r'c: \ windows '

+0

привет Skycc. Спасибо человеку за код. Однако он не удалял все папки и подпапки в Windows \ Temp. – user2926827

+0

попробуйте rmdir cmd, я только что добавил, на самом деле, cmil с shutdown с ignore_errors, установленным в True, должен работать, он попытается удалить, что когда-либо он может удалить, включил пустую подпапку, оставляя те, которые не удаляются за – Skycc

+1

. Привет, Skycc.Thanks много мужчин. Он отлично работает :) – user2926827

0

shutil.

import shutil 

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

привет Бэтмен. спасибо за помощь. при попытке кода, который вы дали. он удалил несколько файлов, но не все файлы и папки в папке windows \ temp. – user2926827

+0

Странно. Что произойдет, если вы вызовете 'os.unlink (path)' на один из оставшихся файлов? – Batman

+0

Я думаю, у вас нет разрешения на удаление всех файлов в temp, некоторые могут быть использованы. Попробуйте, если вы можете удалить это вручную – Skycc

0

Возможно, вам захочется жестко закодировать путь.

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) 

 Смежные вопросы

  • Нет связанных вопросов^_^