kone
ainovel

ainovel

24기가 방주 중복 검사용 1차 검수하는데

05/24/2026, 06:47:11
일반
2115 views · 5 likes



replacer.py

import os import re
def clean_txt_filenames():     # 1. 파일들이 들어있는 폴더 경로 (현재 위치)     folder_path = "./"
    # 2. 폴더 안의 모든 파일 확인     for filename in os.listdir(folder_path):                 # '.txt' 확장자로 끝나는 파일만 필터링         if filename.endswith(".txt"):                         # [단계 1] 불필요한 기호(+, -, _)를 띄어쓰기로 변경             new_filename = filename.replace("+", " ").replace("-", " ").replace("_", " ")                         # [단계 2] 특정 텍스트 패턴 변경 및 제거             new_filename = new_filename.replace("] ", "]").replace("[ ", "[").replace("[][", "[")                         # [AI 번역] 관련 다양한 태그들을 '[]'로 통일             ai_tags = [                 "AI 번역", "AI번역", "AI+번역",                 "ai 번역", "ai번역", "ai+번역",                 "Ai 번역", "Ai번역", "Ai+번역"             ]             for tag in ai_tags:                 new_filename = new_filename.replace(tag, "")                         # [단계 3] 특수 괄호(「」【】『』), 전각문자, 한자 완전히 제거             new_filename = re.sub(r'[\uFF00-\uFFEF\u4E00-\u9FFF「」【】『』《》()]', '', new_filename)                         # [단계 4] 연속된 띄어쓰기(스페이스 두 개 이상)를 하나로 줄이기             while "  " in new_filename:                 new_filename = new_filename.replace("  ", " ")                         # [단계 5] 파일명 맨 앞이나 맨 뒤에 남은 공백 제거             new_filename = new_filename.strip()                         # [단계 6] 장르명 태그가 아예 없을 때만 '[]' 추가             if not new_filename.startswith("["):                 new_filename = "[]" + new_filename                         # [단계 7] ★완벽 수정됨: 확장자 분리 후 화수(숫자) 뒤로 보내기★             # 먼저 파일명과 '.txt' 확장자를 분리하여 보호합니다.             name_base, ext = os.path.splitext(new_filename)                         # 정규식: (맨 앞의 [태그]) + (숫자와 공백) + (나머지 제목)             match = re.match(r'^(\[.*?\])?\s*([\d\s]+)\s*(.*)$', name_base)             if match:                 # 괄호 태그, 숫자 덩어리, 실제 제목을 각각 분리                 tag = match.group(1) if match.group(1) else "[]"                 numbers = match.group(2).strip()                 title = match.group(3).strip()                                 # numbers에 실제 숫자가 있고, title(제목)도 존재할 때만 순서를 변경                 if title and any(char.isdigit() for char in numbers):                     # [태그]제목 화수.txt 형태로 재조립                     new_filename = f"{tag}{title} {numbers}{ext}"             else:                 # 만약 위 정규식에 해당하지 않는 경우라도 확장자는 다시 붙여줍니다.                 new_filename = name_base + ext                         # 이름에 변경 사항이 없으면 다음 파일로 넘어감             if new_filename == filename:                 continue                             old_file_path = os.path.join(folder_path, filename)             new_file_path = os.path.join(folder_path, new_filename)                         # [단계 8] 변경하려는 새 이름과 똑같은 파일이 이미 존재하는지 확인             if os.path.exists(new_file_path):                 size_old = os.path.getsize(old_file_path)                 size_new = os.path.getsize(new_file_path)                                 if size_old == size_new:                     os.remove(old_file_path)                     print(f"🗑️ 중복 삭제(용량 동일): '{filename}'")                 else:                     base_name, ext = os.path.splitext(new_filename)                     counter = 1                     while os.path.exists(new_file_path):                         new_file_path = os.path.join(folder_path, f"{base_name}_{counter}{ext}")                         counter += 1                                         os.rename(old_file_path, new_file_path)                     new_saved_name = os.path.basename(new_file_path)                     print(f"⚠️ 용량 다름(새 번호 부여): '{filename}' ➡️ '{new_saved_name}'")                                 else:                 os.rename(old_file_path, new_file_path)                 print(f"✅ 변경 완료: '{filename}' ➡️ '{new_filename}'")
    print("\n🎉 모든 파일명 정리 및 중복 처리 작업이 끝났습니다!")
# 스크립트 실행 if __name__ == "__main__":     clean_txt_filenames()




이걸 언제 다 해 ㅋㅋㅋㅋㅋㅋ

5
6 comments
Sign in to comment
05/24
프로그램으로 내용물 동일한거 돌리고 제목 없는거 제미나이로 찾고 하다보니 중복 아닌게 백개 언저리던
저 파이썬이 1차로 걸러주고 나니까 30개만 중복이더라구요 제가 가진 기존 파일이랑 한번 더 검사하긴 해야하는데 이건 내일 할 예정
05/24
프로그램한테 짬 때려도 만만찮은 분량이죠... 이 글을 보니 저도 슬슬 하드 정리 해야한다는 압박감이 드네요!
Sign in to comment
주기적으로 이제 슬슬 누가 욕구불만인거야 갱신되야 하는데 안된다....!
잡담
명일방주너무좋아광인
03/24 870 3
hjd2048을 찬양하라
잡담
라스트오리진으로 팔려간 댕라
03/24 1880 6
현경고현
복구 요청
nvcsw2314
03/24 2792 0
집단중포 읽기 도전합니다
잡담
backtothe
03/24 1105 3
명방, 실지주는 선뜻 진입하기 어려울 수 있음
잡담
하이바라
03/24 2096 3
스피드 쌀먹 공유 모음 20260324
[일반]
tassdar
03/24 11355 100
- 웹소설 추천 부탁드립니다 ! #AINOVEL 픽 추천모음정리
후기
코네
03/24 5400 17
진문장생 참 재밌는 작품인데 ;;;
잡담
개꿀페페
03/24 1448 6
(복구)[뱅드림]설마 나, 진짜 여자 성우 중독인가?难道我真有女声优瘾? 1-363
[복구]
hyun6871
03/24 8891 21
호그와트에서 시작하는 룬 마법사 후기
후기
cayde
03/24 2825 4
[다중]크로스오버,귀신보는 일상综漫,见鬼的日常 1-118
[패러디]
hyun6871
03/24 5047 57
태고전혼, 만영선족 어수장생, 선명아재, 수선 잡역부에서 선존까지, 수선 제이영근조아장생, 장생수선 요수의 재능을 훔치다, 포켓몬 어둠의 부활, 영향성
[복구]
tassdar
03/24 9531 59
[타입문X나루토]타입문: 우치하 사스케는 그저 조용한 삶을 원할 뿐 1-490
[패러디]
weieilkk22
03/24 4553 25
[실지주]실력지상주의에서 저는 모든 cg를 수집하고 싶습니다 1-224
[패러디]
weieilkk22
03/24 4782 59
주로 컴퓨터로 봐서 SD 텍뷰 쓰는데
일반
nandajk
03/24 1508 0
[실지주]실력지상주의, 스바루 나츠키, 학교로 돌아오다. 하지만 숙청왕. 1-174
[패러디]
weieilkk22
03/24 3498 37
번역작 읽다가 젤 빡센 케이스
일반
qqq2we123123
03/24 1486 4
금서:어떤 크로스오버의 하느님의 오른쪽자리 이거 원제 아시는분
잡담
djdoc12
03/24 2421 0
Archive of our own을 알았습니다.
잡담
Jinglebell12
03/24 2154 1
현지화 번역이 대단하다고 느껴짐
잡담
vango
03/24 2021 0
태고전혼, 만영선족.., 선협... 선협... 선협...
복구 요청
okkim
03/24 2604 -7
선명아재, 수선 잡역부.., 수선 제이영근.., 장생수선 요수의 재능..,
복구 요청
okkim
03/24 1556 -1
영항성왕 복구요청 드립니다
복구 요청
okkim
03/24 1434 0
포켓몬의 어둠의 부활 1-1456완 부탁드립니다.
복구 요청
ca62160
03/24 1905 -1
오랜만에 쌀
[패러디]
talsoul
03/24 5945 67
수선종신비소정개시 복구 요청드립니다
복구 요청
okkim
03/24 1508 0
이건 뭐여...
잡담
brlosnb2744
03/24 1763 0
나도 쌀
[일반]
architecture
03/24 8482 55
프로젝트 세카이! 나는 결국 IF선을 구하리라 1~200
[패러디]
라스트오리진으로 팔려간 댕라
03/24 3049 59
2대 오마지오의 가면라이더 재현 번역 부탁 드려요
번역 요청
cks2015
03/24 7532 1