python-os.rmdir와shutil.rmtree의 차이와 용법

2992 단어
스크립트를 쓸 때마다pycharm은 캐시 파일을 자동으로 생성합니다pycache__파일은 코드를 제출할 때 하나씩 삭제해야 하기 때문에 이 디렉터리와 아래의 파일을 자동으로 순환해서 삭제하는 코드를 한 소절 쓴다.
아이디어:
먼저 디렉터리와 그 아래의 파일을 읽은 다음 디렉터리 아래의 파일을 삭제한 다음 빈 디렉터리를 지우면 됩니다.
첫 번째 단계:
import os
os를 이용하다.walk(top,[,topdown],onerror[,followlinks]) 디렉터리 훑어보기
여기에서:
top: 내용을 옮겨다니는 루트 디렉터리 지정하기
topdown: 반복 순서를 지정할 수 있는 선택할 수 있는 매개 변수입니다.True는 루트 디렉토리를 맨 위에서 아래로 반복하는 것을 나타냅니다.False이면 먼저 마지막 하위 디렉토리를 반복합니다.기본값은 True입니다.
반환값: 반환값은 세 개의 요소를 포함하는 원조의 생성기입니다.그 중에서dirpath는 현재 옮겨다니는 경로를 표시하고 문자열입니다.dirnames는 현재 디렉터리에 포함된 하위 디렉터리를 표시합니다. 목록입니다.filenames는 현재 경로 아래에 포함된 파일을 표시합니다. 목록입니다.
 
2단계:
os.remove: 파일 삭제
os.rmdir: 디렉터리를 삭제하는 데 사용합니다. 값의 주의는 디렉터리에 파일이 있으면 디렉터리가 비어 있지 않으면 삭제에 실패하고 오류가 발생합니다.
for 순환을 이용하여 디렉터리에 있는 파일을 삭제한 다음 디렉터리를 비웁니다.마지막 단계의 하위 디렉터리부터 파일을 삭제해야 하며, 파일이 깨끗하게 삭제되지 않아 디렉터리 삭제에 실패하는 것을 방지해야 한다.
 
코드는 다음과 같습니다.
1 import os 
  tuples = os.walk(top=top, topdown=False) 2   for root, dirs, files in tuples: 3   if "__pycache__" in root: 4    for name in files: 5   os.remove(os.path.join(root, name)) 6    os.rmdir(os.path.join(root))


 
 
방법2: 찾아보면python에는 디렉터리와 그 아래의 파일을 명령으로 삭제할 수 있는 모듈이 있습니다. 이 모듈은shutil입니다.
코드는 다음과 같습니다.
import os
import shutil

tuples = os.walk(top=top, topdown=False)
for root, dirs, files in tuples:
    print(root, dirs, files)
    if "__pycache__" in root:
        shutil.rmtree(os.path.join(root))

 
python은 정말 강력하다. 생각지도 못한 것만 있고, 할 수 없는 것은 없다.

좋은 웹페이지 즐겨찾기