본문 바로가기

개발 하다보면 파일리스트를 받아서 처리하도록 하는 스크립트들이 제법 있다. 이럴때 파일리스트를 만드는 것도 일이다. 간단하게 스크립트로 짜두면 편리할 듯 해서, 우리 GPT를 이용하여 열심히 만들어 봤다.

 

https://github.com/bjnhur/make_filelist

 

GitHub - bjnhur/make_filelist: This project provides a Python script to generate a list of files from a specified directory. The

This project provides a Python script to generate a list of files from a specified directory. The script can filter files based on a given pattern, such as file name or extension. - bjnhur/make_fil...

github.com

혹시 업데이트는 이 레포를 활용할 예정이다.

 

filter 문자열을 받아서 일반적인 파일 검색 패턴을 처리하도록 코드를 변경하겠습니다. 이를 위해 fnmatch 모듈을 사용하여 파일 이름을 필터링하겠습니다.

수정된 create_file_list.py

import os
import argparse
import fnmatch

def create_file_list(directory, output_file, file_filter=None):
    file_list = []

    for root, dirs, files in os.walk(directory):
        for file in files:
            if file_filter and not fnmatch.fnmatch(file, file_filter):
                continue
            file_list.append(os.path.join(root, file))

    with open(output_file, 'w') as f:
        for file in file_list:
            f.write(file + '\n')

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Generate a file list from a directory with an optional filter.')
    parser.add_argument('directory', type=str, help='The directory to search for files')
    parser.add_argument('output_file', type=str, help='The output file to write the file list to')
    parser.add_argument('--filter', type=str, help='Optional filter to include only files matching this pattern (e.g., "*.tcl", "example*.exe")')

    args = parser.parse_args()

    create_file_list(args.directory, args.output_file, args.filter)
    print(f"File list has been saved to {args.output_file}")

설명

  • create_file_list 함수: 지정된 디렉토리를 검색하고, 파일 필터를 적용하여 파일 리스트를 생성합니다. 결과는 지정된 출력 파일(output_file)에 저장됩니다.
  • 파일 필터링: fnmatch 모듈을 사용하여 파일 이름이 file_filter 패턴과 일치하는지 확인합니다.
  • 명령줄 인자 처리: argparse 모듈을 사용하여 명령줄 인자를 처리합니다. 디렉토리, 출력 파일, 파일 필터를 인자로 받습니다.

사용 예제

  1. 폴더 내 모든 파일 리스트 저장:
  2. python create_file_list.py /path/to/directory filelist.f
  3. 특정 확장자의 파일만 필터링:
  4. python create_file_list.py /path/to/directory filelist.f --filter "*.tcl"
  5. 특정 이름 패턴의 파일만 필터링:
  6. python create_file_list.py /path/to/directory filelist.f --filter "example*.exe"

정리

개발에 필요한 파일리스트를 손쉽게 만들어 주는 파이썬 스크립트를 만들어 보았다. 다른 방법도 많겠지만 파이썬을 활용한 코드로 유용하다.

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.