어느덧 작년 10월 이후로 글을 안쓴지 11개월... 이대로라면 만들고 1년 넘게 글 한번 안올리는 게시판이 될까봐 부랴부랴 하나 작성해봅니다.. 마침 오늘 예능관에 ai 코딩도 나와서 적절한 타이밍 같네요.
지금부터 쓰는 것은 챗지//피티만 쓸수 있다면 누구나 할 수 있는 간단한 코딩입니다. 파이썬을 사용하지만.. 사실 파이썬을 몰라도 됩니다. 저도 배운지 1년 다되어가거든요(..)
그래도 준비물은 필요합니다.
파이썬이라는 프로그래밍 언어인데, 사용하는 이유는 간단합니다.
일단 (상업적으로는 모르겠지만) 개인용으로는 무료이고, 사용하기 쉽기 때문입니다.
사실 전 컴퓨터 학원 세대라서 비주얼 베이직, c,c++까진 어떻게 겉핥기 식으로 배웠는데, 파이썬 두시간 강좌를 듣고나니 신세계가 펼쳐지는 기분이더라고요. 물론 그 뒤로 안배워서 기억 안나는건 안자랑
어차피 다른 프로그래밍 언어와의 차별점, 장/단점은 챗지피티를 사용하는데 불필요하니 패스하겠습니다(..)
사실 까는것도 파이썬을 안깝니다. 아나콘다 깔거임(..)
아나콘다는... 저도 파이썬 쓸 때만 써봐서 말씀드리기 조심스럽네요. 분명한건 파이썬을 쓸 때 상당히 간편하다는 점입니다.
여러가지 라이브러리가 포함되어 있고, 코딩도 편하고..라는 여러 장점이 있지만, 어차피 복잡한 글을 쓸게 아니니 넘어가겠습니다.
사실 제가 이걸 통해서 배웠기 때문에 깔았습니다.(..)
제일 위의 anaconda에 들어가면 나오는 화면입니다. 오른쪽 위를 보면 회원가입도 할 수 있는데 굳이 할 필요는 없고 화면 오른쪽 이메일 주소만 적으시면 이메일 주소로 다운로드 링크가 갑니다. 저도 가입 안함
아나콘다에서 제공한 다운로드 주소로 가면 이런 화면이 뜹니다.
저는 가장 왼쪽의 윈도우 버전을 받았습니다. 여담이지만 언젠가 리눅스 전용 컴을 사서 리눅스 버전을 깔아보는게 로망이기도 한데, 아무래도 윈도우로 만족할 것 같네요
설치하고 나면 나오는 화면
여기서 Anaconda toolbox를 들어가시면,
이런 화면이 나옵니다.
여기서 빨간 네모의 python 3를 들어가시면
이제 챗//지//피티를 사용할 준비가 되었습니다.
어? 간단하다면서 이렇게 복잡하다고요? 그래서 이 글을 썼습니다. 어쨌든 프로그램을 깔아야 쓸 수 있거든요(..)
이제 만능 코딩 친구를 불러옵니다.
아나콘다로 파이썬을 쓰겠다 하니 친절하게 정보를 여러개 묻습니다.
순순히 답해줍니다. 아는 내용만 적으면 됩니다. 파이썬은 사실 아까 홈페이지에 들어가서 확인했는데, 영 모르겠다 싶으면 위의 콘솔에 3.12.4로 적혀있으니 적으셔도 될겁니다.
'폴더 내의 모든 텍스트 파일을 읽은 후, 그 중 원하는 단어가 들어있는 파일의 이름을 찾아주는 코드'를 부탁하니,
바로 알아듣고 코드를 짜줍니다.
다시 말씀드리지만, 저는 파이썬을 전혀 모른다고 해도 과언이 아니기 때문에, 바로 확인해봅니다.
아나콘다가 대단한 이유.png
아나콘다의 파이썬 콘솔을 쓸 경우, 아까 위의 코드를 그대로 복사해서 shift+엔터만 누르면 바로 결과가 나옵니다.
물론 엑셀의 vb도 이렇게 하면 되긴 한데(..) 아나콘다의 경우 기록이 계속 남으면서 원래 코드에서 조금씩 수정할 수 있다는 점이 장점입니다. 이건 코딩을 해봐야 아는 장점입니다.
아무튼..
돌렸더니 에러가 뜨네요.
지정된 경로를 찾을 수 없다고 합니다. 이런.. eu4 폴더 경로와 단어를 적어야 하는데 잊었네요(..)
어? 이번엔 분명히 해당 폴더와 찾는 단어를 잘 적었는데도 안됩니다.
이러면 뭐가 문제인거지? 다시 챗을 찾아갑니다.
ㅇㅅㄲ가?(...)
질문을 했더니 "사실 내가 수정한다는건 거짓말이었고 내 코드는 원래 완벽했다!"를 시전하고 있습니다. 이게.. ai?
오류를 통째로 올렸더니 이번엔 제대로 된 답변을 해줍니다.
(코드가 복잡해지므로 생략합니다.)
오.. 정말로 됩니다.
하지만 정작 military_strength가 들어간 단어는 못찾는군요. 어째서?
혹시 lua 파일에만 military_strength가 들어가서 그런가? 하는 생각으로 다시 짚이티한테 질문합니다.
역시 바로 답변합니다.
? 뭐야 왜 안돼?
여기서 즤피티의 장점이 발휘됩니다.
다른 챗방(챗방2라고 하겠습니다.)을 켜서 코드를 그대로 넣고, 돌리면 어떤 일이 벌어질지 물어봅니다.
그런데 ai가 감히 한국인인 저한테 천조국 언어를 날리는군요 무식하다는 점을 이렇게 돌려까다니..
졸렬하게 챗방2한테 한글로 알려달라고 하면(..) 이렇게 깔끔하게 결과까지 말해줍니다. 반응을 봐선 코드는 멀쩡한가 보네요.
이러면 예상해볼만한게, 폴더를 지정했을 때, 그 폴더만 검색했을 가능성이 있습니다.
scv한테 본진 미네랄 캐라고 했는데 소진되면 자동으로 앞마당 멀티로 가지 않는 것처럼...아, 비유가 너무 올드한데 다른 비유가 생각이 안나네요(..)
다시 개발자 챗방에 갑니다. 하위 디렉토리까지 포함하냐고 물어보니, 더 말을 안해도 바로 코드를 다시 짜주는군요. 이게 챗g피티다.png
오... 드디어 파이썬에서 military_strength라는 단어가 포함된 파일들이 한번에 보입니다.
여기서 경로에서 '\'를 왜 '\\'로 넣어서 검색하고 '\\'로 파일이 나오나요?라는 질문이 나올 수 있는데, 파이썬은 \을 \\로 사용하더라고요. 사실 이걸 바꿔줄 수 있는 명령어도 있는데 귀찮아서 안 찾아봤다는 구질구질한 변명을 하겠습니다.(..)
이제 \\를 \로 바꾸고, 위의 '를 전부다 없애고 나면... 이 파일들이 military_strength 단어가 들어있는 파일들입니다.
이 파일들을 보면 군사력에 대한 비밀을 알 수 있겠죠?
그런거 ㅇ벗다
군사력에 대한 공식은 소스코드에 들어있는지 텍스트로는 확인 불가능하더라고요. 대신 army/navy_balance와 border_distance 와 같이 대상 국가의 툴팁에서 볼 수 있다고 하니 EU4에서 확인이 가능할 것 같습니다.
그런거 ㅇ벗다
이후 EU4를 켜고 30분을 찾아봤는데 역시 없더라고요. 아무리봐도 패치노트(1.30)에 따른 내용을 못찾겠습니다. 그나마 실제거리가 border_distance와 비슷한 것 같기도 하고..흠..
그러면 위의 내용 중 tooltip이 들어간 내용을 점검하면 되지 않나?
그만 araboja...
아무튼 결론은.. 실패!(..)
그래도 프로그래밍에 대한 아무런 지식이 없어도 tgp를 이용하면 간단하게 코딩을 할 수 있다는 사실을 알려드리면서 이 글을 마칩니다. 사실 그게 목적이었고!
ps)
1. anaconda 다운로드 링크
https://www.anaconda.com/download
2. ChatGPT 링크
3. 위의 코드입니다. 저도 언젠가 다시 써먹을 것 같아서 적어둡니다.
import os
import re
import chardet
def find_files_with_word(folder_path, search_word):
# 검색할 단어에 해당하는 파일 이름 리스트
matching_files = []
# os.walk()를 사용하여 폴더와 하위 디렉토리의 모든 파일 탐색
for root, dirs, files in os.walk(folder_path):
# 텍스트 파일과 Lua 파일만 선택하기
text_files = [file for file in files if file.endswith(('.txt', '.lua'))]
for file in text_files:
file_path = os.path.join(root, file)
# 파일 인코딩 감지
with open(file_path, 'rb') as f:
raw_data = f.read()
result = chardet.detect(raw_data)
encoding = result['encoding']
# 감지된 인코딩으로 파일 읽기
try:
with open(file_path, 'r', encoding=encoding, errors='ignore') as f:
content = f.read()
# 단어가 파일 내용에 포함되어 있는지 확인
pattern = rf'\b{re.escape(search_word)}\b' # 검색어 이스케이프 처리
if re.search(pattern, content):
matching_files.append(file_path) # 전체 경로 추가
except Exception as e:
print(f"파일을 읽는 도중 오류 발생: {file_path} - {e}")
return matching_files
# 함수 사용 예시
folder_path = 'D:\\SteamLibrary\\steamapps\\common\\Europa Universalis IV' # 여기에 폴더 경로를 입력하세요.
search_word = 'military_strength' # 찾고자 하는 단어를 입력하세요.
found_files = find_files_with_word(folder_path, search_word)
if found_files:
print("단어가 포함된 파일들:", found_files)
else:
print("해당 단어가 포함된 파일을 찾을 수 없습니다.")
댓글
댓글 리스트-
작성자Cambrai 작성시간 24.09.01 아마 \ 하면 특수문자(줄바꿈 \n처럼)로 인식해서 진짜 \ 하려면 \\로 쳐야될껍니다.
그거랑은 별개로 파이썬... 정말 이상한 언어로 알고 있습니다... 탭 문법 따위는 누가 만들었는지... -
답댓글 작성자통장 작성자 본인 여부 작성자 작성시간 24.09.01 네네 맞습니다, 그래서 제가 배울 때도 강사분께서 무슨 명령어를 쳐서 편하게 적는 방법을 알려 주셨는데, 이번 컨셉은 아무것도 모르는 상태(사실)에서 최소한의 지식으로 파이썬을 돌리는 것(..)이었기 때문에 그대로 썼습니다.. ₩₩와 ₩ 차이는 생각해보니 꽤 큰 지식이네요(..)
오... 확실히 이상하다면 이상한데, 전 배울때 정말 혁신적이라고 생각이 들더라고요. 일단 세미콜론 없는 것에서 반했고(..) 리스트처럼 다른 프로그래밍 언어에서 보기 힘든 개념을 집어넣어서 결과적으로 더 간편하게 코딩을 할 수 있도록 해주는데, 회사에서 쓸 수만 있다면 정말 매크로들을 전부 대체하고 싶을 정도로 매력적이었습니다 -
답댓글 작성자Cambrai 작성시간 24.09.01 통장 회사나 연구실에서 도구로 쓰기에는 좋지만, 알고리즘 짜는 지인들이 말하기를 개발하는 입장에서는 수수께끼의 블랙박스가 따로 없다고 합니다. 다른 언어와 달리 뭐가 어떻게 돌아가는지 알기 어렵다고 하더라고요
-
답댓글 작성자통장 작성자 본인 여부 작성자 작성시간 24.09.02 Cambrai 오...제가 회사와 연구실에만 연이 있는 사람이라 알고리즘 쪽의 얘기는 오늘 들었네요(...) 하긴 배우라고 한 곳들이 대학교(자과대), 회사였네요. 용도가 다 다르긴 한가봅니다 ㄷ...