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

특정 확장자의 파일명을 수정하기 위한 파이썬 코드
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

다중공선성은 잘못된 인과추론 결과를 만들어낼 수 있습니다.

다중공선성은 잘못된 인과추론 결과를 만들어낼 수 있습니다.

다중공선성(Multi Collinearity) * **Multi-Collinearity(다중공선성)**는 독립 변수들 간의 강한 상관관계가 존재할 때 발생합니다. 즉, 한 독립 변수가 다른 독립 변수에 의해 설명될 수 있을 정도로 상관관계가 높은 상황을 의미합니다. * 이 문제는 주로 회귀 분석에서 나타나며, 변수들 간의 관계를 해석하는 데 있어 큰 장애물이 될 수 있습니다. * 일반적인 회귀식을 $Y=

Bayesian P-Value는 불확실성을 감안하여 모델의 적합도를 평가합니다.

Bayesian P-Value는 불확실성을 감안하여 모델의 적합도를 평가합니다.

Bayesian P- Value * Bayesian P-Value는 **모델의 적합도(goodness-of-fit)**를 평가하는 데 사용됩니다. * 사후 분포(posterior distribution)를 이용하여 실제 데이터와 모델이 생성한 예상 데이터를 비교함으로써, 관측된 데이터가 모델에 의해 얼마나 잘 설명되는지를 평가합니다. * 빈도주의 p-값은 "관찰된 데이터보다 극단적인 데이터가 나올 확률"을 계산하지만, Bayesian P-Value는 "모델이 실제

Non-Identifiability는 Model Parameter를 고유하게 식별할 수 없는 현상입니다.

Non-Identifiability는 Model Parameter를 고유하게 식별할 수 없는 현상입니다.

Non Identifiability * Non-Identifiability는 주어진 데이터와 모델에 대해 특정 파라미터를 고유하게 식별할 수 없는 상황을 의미합니다. 즉, 여러 파라미터 값들이 동일한 데이터를 생성할 수 있으며, 이로 인해 특정 파라미터 값을 확정적으로 추정하기 어렵게 됩니다. * 베이지안 추론에서 Non-Identifiability는 사후 분포가 특정 파라미터 값에 대해 명확하게 수렴하지 않고, 여러 값들에 대해 비슷한 확률을

Rootgram은 큰 분산을 갖거나 비정규 형태의 데이터를 위한 히스토그램입니다.

Rootgram은 큰 분산을 갖거나 비정규 형태의 데이터를 위한 히스토그램입니다.

Rootgram * 히스토그램의 변형으로 데이터가 비정규적이거나 큰 분산을 가지는 경우, 정확한 분포를 파악하기 위해 사용됩니다. * 일반적으로 히스토그램은 데이터의 빈도를 직접적으로 나타내기 때문에, 큰 값이 빈번하게 발생하는 경우 상대적으로 작은 값을 잘 드러내지 못하는 경향이 있습니다. 반면, Rootgram은 빈도를 제곱근 형태로 변환하여, 데이터 분포의 차이를 더 잘 시각화할 수 있도록 돕습니다 * 여기서