본문 바로가기
프로그램

[파이썬] 문제 : 폴더내의 파일 확장자 파일 검색

by 오디세이99 2022. 11. 13.
728x90
반응형

조건

1. txt와 xlsx확장자를 가지고 있는 파일을 입력한다면 확장자 이름 txt와 xlsx을 출력하는 방법이랑
2. 만약 파일 확장자가 다른 파일(ex.ppt)을 검색했을 때 “존재하지 않는 확장자입니다” 라고 출력되고,
3. 확장자는 같지만, 폴더에 있는 파일과 다른 파일을 입력할 경우(ex. re.txt) “존재하지 않는 파일입니다” 출력

 

import os
 
path_dir = 'E:/RnD/지식IN/tmp5'            # 대상 폴더 지정

ss = input('검색할 파일 이름을 입력(예:reunion.txt): ')   # 파일명(확장자 포함) 입력 받음

tmp = ss.split('.')                     # 확장자 구분을 위해 '.' 문자로 분리하려 리스트로 만듬. '.'이 여러개인 파일명 처리에 쉬움
ext = tmp[-1]                           # 리스트 중 마지막 요소(문자열)이 확장자가 됨
fname = ''.join(tmp[:-1])               # 리스트 중 마지막 요소를 제외한 앞부분 요소들이 파일명(확장자 제외)이 됨

if ext != 'txt' and ext != 'xlsx':     # txt, xlsx가 아닌 확장자를 입력하면 존재하지 않는 확장자
    print("존재하지 않는 확장자입니다")
else:
    file_lst = os.listdir(path_dir)     # 해당 폴더의 파일 리스트를 가져 옴(reunion.txt 등등)

    flag_find = False                  # 입력된 파일명의 파일을 찾았는지 구분 bool 변수
    for i in range(len(file_lst)):     # 파일명을 순차적으로 가져옴. 
        tmp = file_lst[i].split('.')    # 파일명과 확장자 분리
        ext = tmp[-1]
        if fname+'.' in file_lst[i]:   # 찾으려는 파일명(입력 받은) 문자열이 폴더의 파일명 문자열에 있는지(in) 확인
            if ext == 'txt' or ext == 'xlsx':   # 찾은 파일명의 확장자가 txt 또는 xlsx 이면
                print(file_lst[i])      # 파일명 출력
                flag_find = True       # 입력한 파일명의 파일을 찾았다고 bool 변수를 True로 함
    
    if flag_find == False:            # 모든 파일을 확인했는데 False이면 해당 파일이 없는 것임
        print("존재하지 않는 파일입니다")

결과

검색할 파일 이름을 입력(예:reunion.txt): reunion.ppt
존재하지 않는 확장자입니다
728x90
반응형

댓글