pythonsubprocesspython-importdelete-filermdir

Deleting Windows Temp Files using python script


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.


Solution

  • 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'