특정 확장자의 파일명을 수정하기 위한 파이썬 코드

특정 확장자의 파일명을 수정하기 위한 파이썬 코드
Photo by Mel Poole / Unsplash

배경 및 목적

  • NAS로 파일을 백업하는 과정에서 파일명이 길어서 수정해야 하는 경우가 너무 많아서, 자동화 코드를 작성

감안한 부분

  • 대량의 파일을 처리할 것을 감안해서, 파일 복사 대신 경로만 저장해서 컨트롤한 이후에 최종적으로 필요한 파일만 일괄적으로 처리
  • Python의 concurrent.futures 모듈을 사용하여 병렬로 파일을 처리

샘플 코드

import os  
import shutil  
from concurrent.futures import ThreadPoolExecutor  
  
def process_file(directory, filename, output_directory, delimiter):  
    """  
    파일명을 변경하고 output 디렉토리에 복사하는 작업을 수행하는 함수.  
    """    # 파일명과 확장자를 분리  
    file_base, file_ext = os.path.splitext(filename)  
  
    # Delimiter가 처음 등장한 위치 찾기  
    cut_position = file_base.find(delimiter)  
      
    # Delimiter가 파일명에 존재하는 경우, 해당 위치까지 자름  
    if cut_position != -1:  
        new_filename = file_base[:cut_position] + file_ext  
    else:  
        new_filename = filename  
      
    # 기존 파일 경로와 새 파일 경로 설정  
    old_filepath = os.path.join(directory, filename)  
    new_filepath = os.path.join(output_directory, new_filename)  
      
    # 파일을 output 디렉토리로 복사  
    shutil.copy2(old_filepath, new_filepath)  
  
def trim_filename(directory, extensions, delimiter="_", max_workers=8):  
    """  
    지정된 디렉토리에서 특정 확장자의 파일을 찾고,  
    Delimiter가 처음 등장한 지점까지 파일명을 잘라서 output 디렉토리에 복사하는 함수.  
  
    Parameters:    directory (str): 파일을 검색할 디렉토리 경로  
    extensions (list): 검색할 파일의 확장자 리스트 (예: ['.txt', '.csv'])  
    delimiter (str): 파일명을 자를 기준이 되는 Delimiter (기본값: "_")  
    max_workers (int): 동시에 작업할 최대 스레드 수 (기본값: 8)  
  
    Returns:    None    """    # output 디렉토리 경로 생성  
    output_directory = os.path.join(directory, "output")  
    os.makedirs(output_directory, exist_ok=True)  
  
    # 처리할 파일 리스트 작성  
    files_to_process = [filename for filename in os.listdir(directory) if any(filename.endswith(ext) for ext in extensions)]  
      
    # 스레드를 사용하여 파일 처리  
    with ThreadPoolExecutor(max_workers=max_workers) as executor:  
        for filename in files_to_process:  
            executor.submit(process_file, directory, filename, output_directory, delimiter)

Read more

Chi-Square Test와 T-Test는 데이터 특성에 따라 선택하여 사용합니다.

Chi-Square Test와 T-Test는 데이터 특성에 따라 선택하여 사용합니다.

Chi-Square Test가 A/B/C Test에서 사용되는 구체적인 경우 * 범주형 데이터 분석: 각 그룹에서 클릭하거나 전환된 사람의 수를 비교할 때, 이 데이터를 범주형 변수로 간주하고 Chi-Square Test를 적용할 수 있습니다. * 다중 그룹 비교: A/B/C 테스트에서 세 개 이상의 그룹을 비교해야 할 때, Chi-Square Test는 모든 그룹 간의 독립성을

OLS 기반 인과추론 시 오차항 관련 체크 필요 가정

OLS 기반 인과추론 시 오차항 관련 체크 필요 가정

배경 * 아래 글을 DANBI에서 보다가 더 알아보게 되었습니다. OLS를 떠받치는 몇 개의 기둥이 있는데 그중 실용적으로 가장 중요한 것이 일치성(consistency)다. 쉽게 말해서 OLS를 통해 도출된 추정량이 있을 때 샘플사이즈가 커지면서 이 값이 참 값으로 접근한다는 것이다. 일치성이 충족되면 우리는 적당하게 큰 표본에 대해서 추정치가 좋은 속성을 지니고 있다고

인공지능이 문제가 아니라 결국 사람이 문제가 될 것입니다.

인공지능이 문제가 아니라 결국 사람이 문제가 될 것입니다.

사람들이 AI가 필요하다고 생각하는 시점 저 판사를 얼른 AI로 교체해야 한다. 유튜브에서 뉴스를 보다 보면 정말 많이 보이는 덧글입니다. 이러한 내용의 덧글이 달릴 때마다, 정말 많은 사람들이 공감을 표하곤 합니다. 왜 이렇게 사람들은 이러한 주장에 공감을 표하는 것일까? AI는 시킨대로 하기 때문에 공정하다는 인식 여러 이유가 있겠지만, 사람들은 아마 AI가

BG/NBD 모델은 고객 생애가치를 추정하는데 사용되는 확률 모델입니다.

BG/NBD 모델은 고객 생애가치를 추정하는데 사용되는 확률 모델입니다.

1. BG/NBD 모델이란? * BG/NBD(Beta-Geometric/Negative Binomial Distribution) 모델은 **고객의 생애 가치(Customer Lifetime Value, CLV)**를 추정하는 데 사용되는 확률적 모델입니다. * 특히 고객이 반복 구매를 할지, 아니면 더 이상 활동하지 않을지를 추정하는 데 유용합니다. 이 모델은 고객의 구매 행태를 두 가지 중요한 개념으로 나눕니다: * 고객은 활성(active)