问题
Can you help me how can i delete all the files under the Windows/Temp files?? Below are my scripts but it doesn't work at all.
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'
Thank you in advance.
回答1:
using windows command del to remove all files in dir with wildcard . This will delete all files recursively within it, however it will leave the empty subfolder there
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'
change the 1st line to below to delete whole directory tree of Windows\Temp.This will remove everything include the Temp folder itself if success, recreate parent directory afterwards
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 from shutil should be a pretty good choice, ignore_errors set to ignore all the errors in middle and continue until all directory tree complete
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)
Another option to iterate over directory to be deleted
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)
change the del_dir accordingly to any directory of interest
You are dealing with windows folder, beware to set the directory to delete carefully, you would not want to mistakenly put del_dir = r'c:\windows'
回答2:
Use shutil.
import shutil
shutil.rmtree(r"C:\Windows\Temp")
回答3:
You might want to hard-code the path.
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)
来源:https://stackoverflow.com/questions/40559024/deleting-windows-temp-files-using-python-script