본문 바로가기
Python/자동화도구

python - 폴더 or 파일을 열고 기존 경로 저장하기(try, except, FileNotFoundError)

by 하나다음은둘 2023. 2. 17.

파일 선택하여 파일 경로 및 파일 명칭 가져오기, 폴더 선택하여 경로만 가져오기/경로 문자반환 글에서 사용한 try, except문에 대해서 설명하겠습니다. 예외처리 말고 실제 파일선택 및 경로를 가져오고 싶으면 제 작성글에서 찾아보시면 됩니다.

 

실제 사용한 앞의 코드는 아래와 같습니다.

아래는 class의 인스턴스변수인 self.filePath 가 사용되니 아래 이를 없앤 코드로 설명드리겠습니다.

1
2
3
4
5
6
try:
    with open(self.filePath) as f:
        self.filePath = f.read()
        self.filePath = self.filePath[:self.filePath.rfind("/")]
except FileNotFoundError as e:
    self.filePath='C:\\Users'
cs

 

설명규칙) 설명은 코드 위에 적어놓겠습니다.

 

1) 폴더 or 파일을 열고 기존 경로를 저장하고 불러오기

try, except 예외처리를 사용합니다.(예외처리를 모르면 아래에 적어놨습니다.) 이유는 한번 열었던 폴더 위치가 사라졌을 때(파일이 없거나 또 파일내 경로가 없을때도 예외처리가 됨) 처리를 해줘야 하기 때문입니다. 

라인1 - try 예외처리 시작

라인2 - 파일 open 시도  1) 파일이 열리면 라인3, 4 실행 2) 파일이 열리지 않으면 except실행

1) 파일이 열리면

아래 코드는 이전 경로가 저장된 text파일을 여는 것 입니다. 만약 파일이 없으면 예외처리가 됩니다!

라인3 - 해당 파일내 텍스트를 읽어옵니다. 저장된 문자열은 아래 text file내 저장된 메시지가  C:/Users/Seo/Desktop/test_folder 이므로 filePath에 저장됩니다.

라인4 - 텍스트파일내 적혀있는 데이터의 문자열에서 폴더명만 가져와야 하기 때문에 해당 문자를 slicing합니다. rfind("/")를 사용하면 우측부터 / 위치를 찾아라 입니다. 그렇게하면 C:/Users/Seo/Desktop/test_folder에서 C:/Users/Seo/Desktop 까지만 filePath에 다시 저장합니다.

 

2) 파일이 열리지 않으면

filePath에 C:\\Users 폴더 위치를 Default로 열게 만들었습니다. 

1
2
3
4
5
6
try:
    with open(filePath) as f:
        filePath = f.read()
        filePath = filePath[:self.filePath.rfind("/")]
except FileNotFoundError as e:
filePath='C:\\Users'
cs

text file내 저장된 메시지

 

다른 방법도 많겠지만 우선 제가 작성한 코드는 위와 같습니다. 즐코딩 되세요!

 

* Try, except 설명(예외처리)

try에 실행이 될 코드를 넣습니다. 

except에 여기선 파일을 열어야 하기 때문에 FileNotFoundError를 쓴 것이고 ZeroDivisionError, FolderNotFoundError와 같은 0으로 나누었을 때 나오는 에러도 있습니다. except에 꼭 명시를 해주지 않아도 알아서 처리를 해주지만 확실히 명시함으로써 무엇이 잘못되었는지 알 수 있습니다. 

1
2
3
4
try:
     실행이 될 코드
except FileNotFoundError as e:
    파일이 열리지 않았을 때 에러를 받아줄 코드
cs

 

댓글