Deleting Windows Temp Files using python script

2019-07-27 01:26发布

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.

3条回答
唯我独甜
2楼-- · 2019-07-27 02:08

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)
查看更多
Lonely孤独者°
3楼-- · 2019-07-27 02:13

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'

查看更多
不美不萌又怎样
4楼-- · 2019-07-27 02:28

Use shutil.

import shutil

shutil.rmtree(r"C:\Windows\Temp")
查看更多
登录 后发表回答