프로그래밍/파이썬(Python)

폴더 체크 / 생성, 폴더 내 파일 삭제 방법

&+&& 2018. 7. 23. 12:51

  원하는 폴더가 없는 경우 생성해 주는 함수 / 폴더 내에 파일이 있는 경우 전체를 삭제 또는 특정 확장자 파일을 삭제하는 경우의 예제입니다.







1. 폴더 체크 및 없는 경우 생성

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import os

def checkdir(createPath):
    if os.path.exists(createPath):
        return 'already exists'
    else:
        os.mkdir(createPath)
        return 'dir create'

print(checkdir('c:/temptest'))


  createPath라는 원하는 경로를 입력해 주면 해당 경로가 존재하는 경우 'already exists'를 리턴하고 없는 경우에는 폴더 생성 후 'dir create'라는 값을 리턴합니다.

  리턴값을 True, False로 구분해서 후 처리를 할 수도 있겠죠.

  실행결과는 아래와 같습니다.

->  입력한 경로가 존재하지 않아 폴더를 생성한 경우


->  입력한 경로가 이미 존재하는 경우




2. 폴더 내 모든 파일 삭제 함수

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import os

def removeAllFile(filePath):
    if os.path.exists(filePath):
        for file in os.scandir(filePath):
            os.remove(file.path)
        return 'Remove All File'
    else:
        return 'Directory Not Found'

print(removeAllFile('c:/temptest'))


  먼저 if문을 통해서 주어진 경로를 체크하고 주어진 경로내의 파일을 for 문을 통해 순회하면서 os.remove를 통해 삭제합니다.

  if문에서 디렉토리가 없는 경우에는 바로 'Directory Not found'를 반환합니다.

->  입력한 경로 내의 파일을 정상적으로 삭제한 경우


->  입력한 경로가 존재하지 않는 경우



3. 폴더 내 특정 확장자 파일 삭제 함수

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def removeExtensionFile(filePath, fileExtension):
    if os.path.exists(filePath):
        for file in os.scandir(filePath):
            if file.name.endswith(fileExtension):
                os.remove(file.path)
        return 'Remove File : ' + fileExtension
    else:
        return 'Directory Not Found'

print(removeExtensionFile('c:/temptest', '.PNG'))


  2번 예와 거의 유사합니다. 다만 fileExtension이라는 확장자 입력만 추가 되었습니다.삭제를 처리할 때 file.name.endswith함수를 통해 fileExtension과 같은 경우에만 삭제를 진행합니다.

->  입력한 경로 내의 특정 확장자 파일을 정상적으로 삭제한 경우


  윈도우 기준 함수이기는 한데 넘겨주는 경로만 맞으면 리눅스에서도 작동하는데에 이상은 없을 것 같네요.