-
(MidJourney 데이터 분리) MidJourney 생성된 이미지 파일들을 별도 폴더로 이동
-
(일괄 이름 변경) 필요 없는 웹 콘텐츠 관련 파일은 일괄적으로 이름을 수정하여 구분
-
(크롤링된 제목 정제) 외부에서 수집한 파일명에 포함된 특수문자와 숫자를 제거하되, 쉼표, 마침표, 괄호 및 괄호 내 숫자는 유지
import os
import re
def sanitize_filename(filename):
# 괄호 안의 숫자는 보존
filename = re.sub(r'(?<!\()\d+(?!\))', '', filename)
# 특수문자(밑줄 포함)는 공백으로 변환, 괄호, 쉼표, 마침표만 유지
filename = re.sub(r'[^\w\s\(\),\.]|_', ' ', filename)
# 양끝 공백 제거
return filename.strip()
def is_image_extension(filename):
return filename.lower().endswith(('.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff'))
def ensure_unique_name(folder_path, base_name):
ext = os.path.splitext(base_name)[1]
counter = 1
new_name = base_name
while os.path.exists(os.path.join(folder_path, new_name)):
new_name = f"{os.path.splitext(base_name)[0]} ({counter}){ext}"
counter += 1
return new_name
def process_folder(directory):
for root, _, files in os.walk(directory):
for file in files:
if is_image_extension(file):
clean_name = sanitize_filename(file)
unique_name = ensure_unique_name(root, clean_name)
old_path = os.path.join(root, file)
new_path = os.path.join(root, unique_name)
os.rename(old_path, new_path)
print(f"변경됨: {file} → {unique_name}")
def main():
path = input("처리할 폴더 경로 입력: ")
if not os.path.exists(path):
print("유효하지 않은 경로입니다.")
return
process_folder(path)
print("처리 완료.")
if __name__ == "__main__":
main()
- (텍스트 파일을 통한 접두사 추가) 원본 정보를 유지해야 하는 경우, 해당 폴더 내에
.txt파일을 생성하고, 그 내용을 각 이미지 파일명 앞에 삽입 (마지막이 쉼표가 아니면 자동 추가)
import os
def is_image_file(filename):
extensions = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff'}
return filename.lower().endswith(tuple(extensions))
def load_prefix_from_txt(folder_path):
for file in os.listdir(folder_path):
if file.lower().endswith('.txt'):
prefix = file[:-4] # 확장자 제거
if not prefix.endswith(','):
prefix += ','
return prefix
return None
def add_prefix_to_images(folder_path, prefix):
for root, _, files in os.walk(folder_path):
for file in files:
if is_image_file(file):
new_name = prefix + file
old_path = os.path.join(root, file)
new_path = os.path.join(root, new_name)
os.rename(old_path, new_path)
print(f"이름 변경: {file} → {new_name}")
def main():
target_dir = input("폴더 경로 입력: ")
for root, dirs, _ in os.walk(target_dir):
for subdir in dirs:
subfolder = os.path.join(root, subdir)
prefix = load_prefix_from_txt(subfolder)
if prefix:
add_prefix_to_images(subfolder, prefix)
print("모든 작업 완료.")
if __name__ == "__main__":
main()
-
(Stable Diffusion BLIP 활용 자동 설명 생성) 하위 폴더를 재귀적으로 탐색하며, 각 이미지에 대해 Stable Diffusion의 BLIP 모델을 사용해 자연어 설명 추출하고, 같은 이름의
.txt파일로 저장 -
(텍스트 파일 내 괄호 및 숫자 삭제) 모든 하위 폴더의
.txt파일에서 괄호와 숫자를 제거
import os
import re
def remove_brackets_and_numbers(text):
return re.sub(r'[\d\(\)]', '', text)
def process_text_files(directory):
for root, _, files in os.walk(directory):
for file in files:
if file.endswith('.txt'):
file_path = os.path.join(root, file)
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
cleaned_content = remove_brackets_and_numbers(content)
with open(file_path, 'w', encoding='utf-8') as f:
f.write(cleaned_content)
if __name__ == "__main__":
folder = input("대상 디렉토리 경로 입력: ")
process_text_files(folder)
print("처리 완료.")