python의 os 모듈의 listdir함수에 대해 질문있습니다

조회수 236회

안녕하세요 python os 모듈을 이용한 예제를 작업하던 도중에

궁금한점이 있어 질문드립니다.

#파일 경로 설정
file_der1 = 'C:/Users/maker01/Downloads/a'
file_der2 = 'C:/Users/maker01/Downloads/b'
file_der3 = 'C:/Users/maker01/Downloads/c'
#폴더 당 파일 목록을 list 변수에 저장
file_list1 = os.listdir(file_der1)
file_list2 = os.listdir(file_der2)
file_list3 = os.listdir(file_der3)

위처럼 특정 특정 위치에 있는 a, b, c라는 폴더 안에 들어 있는

파일 목록을 리스트 변수로 긁어오기 위해 os 모듈의 listdir을

사용했는데 해당하는 경로가 없을 땐 해당 줄에서 오류가 나면서 동작 자체가 멈춰버리더라구요

혹시 관련 내용으로 오류가 발생해도 오류 발생한건 무시하고 계속 코드를 진행시킬 수 있는 방법을 알 수 있을까요?

2 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    먼저 그 위치에 파일이 있는지 확인하는 것이 필요해요.

    이 경우에는 os.path.exists 함수를 이용해주는 편이 좋겠습니다.

    import os.path 를 해주고, os.path.exists(file_der1 ~ 3) 로 경로에 파일이 있는지 체크를 해준 뒤 list 변수에 집어 넣으면 되겠죠?

    아 그리고 파이썬은 이미 만들어져있는 디렉토리가 아니라면 파일경로 에러를 띄우게 됩니다. 유의 하셔서 미리 디렉토리가 만들어져있는지 체크하고, 없을 경우엔 디렉토리 만드는 것까지 추가해주시는 편이 좋아보이네요.

    도움이 되셨으면 좋아요 한번 눌러주세요~!

    아래는 이해를 돕기위한 예시입니다~

    import os.path
    
    #파일 경로 설정
    file_der1 = 'C:/Users/maker01/Downloads/a'
    file_der2 = 'C:/Users/maker01/Downloads/b'
    file_der3 = 'C:/Users/maker01/Downloads/c'
    #폴더 당 파일 목록을 list 변수에 저장
    if os.path.exists(file_der1):
      file_list1 = os.listdir(file_der1)
    elif os.path.exists(file_der2):
      file_list2 = os.listdir(file_der2)
    elif os.path.exists(file_der3):
      file_list3 = os.listdir(file_der3)
    
    
    • exists 함수를 이용해서 if문으로 조건을 달아주면 되는거군요 감사합니다! 지상훈 2023.1.26 17:24
  • 먼저 해당 경로가 존재하는지 확인하면 됩니다:

    import os
    
    file_der1 = 'C:/Users/maker01/Downloads/a'
    
    if os.path.exists(file_der1):
        file_list1 = os.listdir(file_der1)
    else:
        print("없지롱")
    

    공식 도움말: https://docs.python.org/3/library/os.path.html#os.path.exists

    검색 키워드:

    • how to ignore python os.listdir not exist error
    • python3 check directory exists
    • 채택은 한분밖에 못드리네요 ㅠㅠ 답변 감사합니다 정말 많이 도움됬어요! 지상훈 2023.1.26 17:25

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)