개발 하다보면 파일리스트를 받아서 처리하도록 하는 스크립트들이 제법 있다. 이럴때 파일리스트를 만드는 것도 일이다. 간단하게 스크립트로 짜두면 편리할 듯 해서, 우리 GPT를 이용하여 열심히 만들어 봤다.
https://github.com/bjnhur/make_filelist
혹시 업데이트는 이 레포를 활용할 예정이다.
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
모듈을 사용하여 명령줄 인자를 처리합니다. 디렉토리, 출력 파일, 파일 필터를 인자로 받습니다.
사용 예제
- 폴더 내 모든 파일 리스트 저장:
python create_file_list.py /path/to/directory filelist.f
- 특정 확장자의 파일만 필터링:
python create_file_list.py /path/to/directory filelist.f --filter "*.tcl"
- 특정 이름 패턴의 파일만 필터링:
python create_file_list.py /path/to/directory filelist.f --filter "example*.exe"
정리
개발에 필요한 파일리스트를 손쉽게 만들어 주는 파이썬 스크립트를 만들어 보았다. 다른 방법도 많겠지만 파이썬을 활용한 코드로 유용하다.
'IT > 파이썬' 카테고리의 다른 글
@dataclass 데코레이터와 -> 연산자 소개 (0) | 2024.06.27 |
---|---|
argparse - add_argument 인자 설명 (0) | 2024.06.21 |
예제 폴더에 들어가는 더미 파일 만들기 스크립트 - 파일명만 있으면 (0) | 2024.06.20 |
Pandas - nan 아닌 값이 나오는 위치 찾기 (0) | 2024.06.14 |
python-docx - Paragraph 와 Run 이 왜 필요한가? (0) | 2024.06.13 |