2016-11-12 4 views
1

Windows/Temp 파일 아래의 모든 파일을 어떻게 삭제할 수 있습니까? 아래는 내 스크립트이지만 전혀 작동하지 않습니다.파이썬 스크립트를 사용하여 Windows 임시 파일 삭제

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 C : \\ Windows \\ Temp \\ *. */s/q ' – Skycc

답변

3

사용하여 창 델 와일드 카드 와 디렉토리에있는 모든 파일을 제거하는 명령. 모든 Temp 폴더 자체 경우를 포함 제거의 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' 

변화를 거기에 1 라인을 빈 하위 폴더를 떠나 성공, 이후 그 밖에

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) 

가, 또 shutil에서 rmtree 꽤 좋은 선택이 될한다 상위 디렉토리를 다시 중간에 모든 오류를 무시하고 완전한 모든 디렉토리 트리까지 계속 설정 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) 

당신은 윈도우 폴더 다루고있는

관심을 임의의 디렉토리에 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 = r'c : \ windows '를 넣고 싶지 않을 것입니다.

+0

안녕 Skycc. 코드에 대한 감사 인사. 그러나 그것은 Windows \ Temp에 모든 폴더 및 하위 폴더를 삭제하지 않았습니다. – user2926827

+0

방금 ​​rmdir cmd를 시도해보십시오. 실제로 추가 된 ignore_errors가 true 인 shutil cmd가 작동해야합니다. 포함 된 빈 하위 폴더를 삭제할 수 있습니다. – 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

임시 파일의 모든 파일을 제거 할 수있는 권한이없는 것 같습니다. 일부 파일이 사용 중일 수 있습니다. 수동으로 제거 할 수있는 경우 시도하십시오 – 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)