프로그래밍

능력자 형님들 파이썬 코드 도움좀...

일단 전 언어 자체를 모르는 사람 이고

gpt선생님 덕분에 파이썬으로 스크립트 쪼금씩 찌끄리는 중입니다.

중간중간 파이썬 강의도 보면서 독학 하고 있어요

 

내가 하고자 하는건 압축파일을 풀고 --> 풀린파일의 이름을 원래 압축파일의 이름 앞에 붙이게 하는 건데
이게 한글도 있고 가끔 한문도 있고 해서 patool 을 이용 해서 스크립트를 만들었는데요.

 

이게 제 자리에선 잘 되는데 딴자리에선 안 돌아 가드라고요
그래서 메세지를 살펴 보니 gpt선생님이 file.exe 가 문제 일수 있다~해서

최신버전으로 업글도 하고, 환경변수도 이상 없고

patool 도 최신버전이고

 

다 체크했는데 않되서 그냥 shuill 이였나 기본 압축 모듈로 바꿔서 어찌저찌 다른 자리에서 돌아가게 해놨는데

또 원래 자리에서 안돌아 가는거에요????

스크립트엔 이상 없고 저 file.exe 라던지 외부적인 요인이 있는거 같은데 

혹시 짐작 가는 형님들 계신가요???

 

 

아래 코드도 첨부 합닌다.

 

import os
from patoolib import extract_archive
import tkinter
from tkinter import filedialog

def extract_and_rename(archive_path, extract_folder):
    # 아카이브를 추출합니다.
    extract_archive(archive_path, outdir=extract_folder)

    # 추출된 파일의 이름을 아카이브 파일 이름의 접두사를 추가하여 변경합니다.
    archive_file_name, _ = os.path.splitext(os.path.basename(archive_path))
    for root, dirs, files in os.walk(extract_folder):
        for file in files:
            old_path = os.path.join(root, file)
            new_file_name = f"{archive_file_name}_{file}"
            new_path = os.path.join(root, new_file_name)
            os.rename(old_path, new_path)
            print(f"이름 변경: {file} → {new_file_name}")

def process_archive_files(folder_path, output_label):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.lower().endswith(('.zip', '.rar', '.7z', '.tar', '.tar.gz', '.tar.bz2', '.tar.xz')):
                archive_path = os.path.join(root, file)
                extract_folder = os.path.join(root, os.path.splitext(file)[0])
                os.makedirs(extract_folder, exist_ok=True)
                extract_and_rename(archive_path, extract_folder)

    output_label.config(text="작업 완료")

def select_folder(output_label, selected_folder_var):
    folder_path = filedialog.askdirectory(title="대상 폴더 선택", initialdir=selected_folder_var.get())
    if folder_path:
        output_label.config(text=f"선택한 폴더: {folder_path}")
        selected_folder_var.set(folder_path)
    return folder_path

def start_process(output_label, selected_folder_var):
    target_folder = selected_folder_var.get()
    if target_folder:
        process_archive_files(target_folder, output_label)

def on_exit(root):
    root.destroy()

def main():
    root = tkinter쩜Tk()  ####쩜tk 가 왜 금칙어????####
    root.title("압축해제&이름변경")
    root.configure(bg='lightyellow')

    selected_folder_var = tkinter.StringVar()
    selected_folder_var.set(r'C:\Users\Administrator\Downloads')

    select_button = tkinter.Button(root, text="경로 선택", command=lambda: select_folder(output_label, selected_folder_var), bg='mistyrose', height=3, width=10)
    select_button.pack(side=tkinter.LEFT)
    output_label = tkinter.Label(root, text=f"경로: {selected_folder_var.get()}",bg='lightyellow', height=5, width=50)
    output_label.pack(side=tkinter.LEFT)

    start_button = tkinter.Button(root, text="시작", command=lambda: start_process(output_label, selected_folder_var), bg='mistyrose', height=2, width=10)
    start_button.pack(side=tkinter.TOP)

    exit_button = tkinter.Button(root, text="종료", command=lambda: on_exit(root), bg='mistyrose', height=2, width=10)
    exit_button.pack(side=tkinter.BOTTOM)

    root.mainloop()

if __name__ == "__main__":
    main()
 

 

####쩜tk 가 왜 금칙어????####

 

43개의 댓글

2023.11.30

자리라는게 다른 컴퓨터라는거? 에러 코드는? 코드 안에는 file.exe 가 안보이는데용

0
2023.11.30
@RhPlusMinus

네 다른 컴퓨터 고요

에러메세지는

 

raise CalledProcessError(retcode, process.args,

subprocess.CalledProcessError: Command '['C:\\bin\\file.EXE', '--brief', '--mime-type', 'C:/Users/klklk/Downloads\\파일명.ZIP']' returned non-zero exit status 1.

 

요런식으로 뜨는데 gpt에 물어보면 file.exe 가 처리를 못한다 이렇게 예기 하드라고요

 

0
2023.12.01
@층노숙자

file.exe에 인자 넣어주고 실행시키는데

File.exe가 오류 뱉었다는 말이잖어

File.exe가 무슨 패키지에 들어있는거지...?

그 패키지 버전 맞춰보면 어때?

 

파이썬이 패키지 버전별로 호환안되고

오류나고 개지랄나는경우 많이봐서 ㅋㅋ

‐-------------------------------

않이 tkinter가 exe로 빌드해주는거였네.

그럼 개붕이가 짠 코드가 뭐가 잘못되서

리턴값 1을 뱉는건데,

오류 메세지만으로는

내부 디버깅이 전혀안되는거네...?

0
2023.12.01
@지나가던300원

이게 그냥 슈틸로 하면 문제없는데

그럼 한글 들어간 압축파일이 깨져버려서 ㅠ

0
2023.12.01
@지나가던300원

이게 잘돌아가는 컴은(코드짠컴)

윈도우7 이고 파이썬 버전도 좀 낮음

 

에러나는컴은 윈도우11이고

파이썬버전이 높음

 

이차이도 있을까요?

 

환경변수랑 나머지 file.exe버전이나

경로 다 같게 마춰놈

0
2023.11.30

경로가 안맞겠지

0
2023.11.30
@슈카임

경로는 filedialog 로 지정해서

해당 파일 인식해요

0
2023.11.30
@층노숙자

그냥 에러 났어요!! 챗지피티가 뭐라해요!! 이러면 에러 해결 못함

최소한 아래 정도는 써줘야 사람들이 대답해줌

 

1) 에러가 어디 줄에서 발생했는지

2) 에러가 뭐 실행하다가 났는지

3) 에러 코드나 에러 메세지가 뭐가 났는지

 

 

0
2023.11.30
@슈카임

위에 프로그램 읽기는 귀찮은데

 

파일 경로 체크, 폴더 존재 체크, 파일 존재 체크, 파일 형식 체크 등 하고 있음?

 

이런 거 안 하면서 안되요 이러면 안돼

 

기본적으로 프로그램이 온전히 실행 되길 바라면 예외처리는 다 넣어 놓고 버그 생각하는게 옳음.

0
2023.11.30
@슈카임

아니 다른컴에선 잘돌아갑니다

이컴에서도 경로 프린트 되고요

0
2023.11.30
@층노숙자

애초에 저 에러가 파이썬 버전이 낮으면 안나고 높으면 나는거 같아 보이는데 흠..

0
2023.12.01
@슈카임

요게 정답이였네요!! 해결 했어요

파이썬 버전 나추니까 잘 돌아 가네요

도움주셔서 감사 합니다~~!!!

0
2023.12.01
@층노숙자

해결 됨? ㅋㅋㅋ

 

그 체크하는 로직이랑 에러 내는 거 보니까 최신버전에 추가 된거 같더라고

 

잘됐다

0
2023.12.01
@슈카임
0
2023.11.30
@층노숙자

https://docs.python.org/3/library/subprocess.html 참고해봐

0
2023.11.30
@층노숙자

내가 파이썬은 공부를 안해봐서 잘 모르겠다. 미안하다 개붕아

0
2023.11.30
@슈카임

감사합니다~

파이썬 버전이틀리간한데 고것도 확인해볼게요

0
2023.11.30

빌드 잘못한거 아님? 라이브러리 포함을 안시켰던가

0
2023.11.30
@AZSA

다른컴에선 잘돌아가요

0
2023.11.30

흠 나도 잘 되는데

 

0
2023.11.30
@anywhere

에러 메세지 저게 끝임?

0
2023.12.01
@anywhere

네 file.exe가 값을 처리못한다??라고

0
2023.12.01
@층노숙자

원10 3.8인데도 잘 되는데

아마 에러로 안돌아가는거면 윗부분이 더 있을거임

traceback으로 시작되는 부분

raise는 에러 일어난 원인인거고

그 위로 따라가면서 결론적으로 어느 부분에서

subprocess를 불러서 calledprocesserror가 나는지를 확인해야함

보통 거기서부터 보여줘야 원래 코드보고 확인하징

0
2023.12.01
@anywhere

아 그렇군요 짐 출근중이니 가서 또

뜯어볼게요

0
2023.12.01
@anywhere

또다른 자리에서 돌려 보니 다른자리에선 또 잘돌아가네요

다른자리 환경은 윈도우11, 파이썬버전 3.8.10 환경변수 동일

 

그래서 안돌아가는 자리도 파이썬 버전 3.11 -->3.8.10 으로 다운시켰서 돌려 봤는데

안 돌아 갑니다.

 

그럼 이 안돌아가는 자리에서 문제가 있는걸로 봐도 되는 거죠?

 

일단 파이썬 버전 문제는 아니고,,,,

환경변수도 동일 하고

나머지도 차차 확인해 볼게요

0
2023.12.01
@anywhere

이게 잘돌아가는 컴은(코드짠컴)

윈도우7 이고 파이썬 버전도 좀 낮음

 

에러나는컴은 윈도우11이고

파이썬버전이 높음

 

이차이도 있을까요?

0
2023.12.01
@층노숙자

patool에서 확장자 찾는 부분에서 에러가 나는거 같음

https://github.com/wummel/patool/blob/master/patoolib/mime.py

에서 guess_mime_file_mime 함수에서 확장자 찾고 그에 맞춰서 extract 해주는거 같은데 흠

일단 에러메세지를 다 보여주셈

0
2023.12.01
@anywhere

INFO patool: Extracting C:/Users/klklk/Downloads\DD011-461_頂類(16X4).ZIP ...

C:\bin\file.EXE: invalid option -- -

C:\bin\file.EXE: invalid option -- b

C:\bin\file.EXE: invalid option -- r

C:\bin\file.EXE: invalid option -- i

C:\bin\file.EXE: invalid option -- e

file.EXE: couldn't find any magic files!

Exception in Tkinter callback

Traceback (most recent call last):

File "C:\Python311\Lib\site-packages\patoolib\util.py", line 42, in __call__

return self.cache[args]

~~~~~~~~~~^^^^^^

KeyError: ('C:/Users/klklk/Downloads\\DD011-461_頂類(16X4).ZIP',)

 

During handling of the above exception, another exception occurred:

 

Traceback (most recent call last):

File "C:\Python311\Lib\tkinter\__init__.py", line 1948, in __call__

return self.func(*args)

 

요게 맨 윗줄 Traceback 입니다

0
2023.12.01
@층노숙자

폴더에 zip 파일 하나만 들어가있음?

써보니까 폴더지정인거 같던데 파일이 아니라

혹시 디렉토리 적는 부분에 파일을 적었낭?

0
2023.12.01
@anywhere

아 드디어 해결 했어요!

안 돌아가는 컴에 파이썬 버전 3.8.10으로 나추고 했는데도 않되서

걍 높은버전인 3.11.5 지워버리고 3.8.10 남기니까 잘 돌아 가네요!!

 

도움주셔서 감사합니다~

 

이걸보면 걍 파이썬 버전 문제인거 같은데 원래 이런일이 종종 있나요?

 

 

0
2023.12.01
@층노숙자

버전이 크게 다르면 그럴수도 있지여

일반적으로 뭐를 짤때 만들었던 파이썬 버전에 사용된 해당 라이브러리 버전까지 같이 싸매서 보내던지

아니면 동일한 환경 만들기 위해서 anaconda 같은 가상환경 지원하는걸 써서 환경을 맞추지영

0
2023.12.01
@anywhere

아~~그렇군요 복잡하네요

그래도 이것저것 만들어서 스크립트 돌리니까 잼있네요 ㅎㅎ

더 공부 하겠습니다~

0
2023.12.01
@층노숙자

간단하게

https://wikidocs.net/21952

이런거처럼 배포 가능한 상태로 만들어서 나누세요

의존성이나 호환성 문제때문에 생기는 문제를 좀 줄일수 있을거에여

 

0
2023.12.01
@anywhere

아~ 인스톨 파일이네요 감사합니다.

일단 회사 안에서만 쓰는거라 대충 마춰서 쓰는데

아예 다른 환경에선 꼭 필요하겠네요

0
2023.12.01

subprocess에서 호출한 작업 return code가 1인데 찾아보니까 일부는 성공하고, 일부는 지원하지 않는 암호화 방식이거나 해서 실패한 경우로 뜨네

 

예외 캐치해서 어떤 파일인지 별도로 체크해. 되는 zip파일하고 안되는 zip파일을 서로 다른 컴퓨터에서 테스트해보면 라이브러리 문제인지 압축파일 문제인지 나오지

0
2023.12.01
@6974

그냥 노멀한 압축파일도

다 안되드라고요

그냥영어, 한글들어간거, 특수문자들어간거 다해봐도 똑같네요

0
2023.12.01
@층노숙자

호환이 안되는 것 같은데 그렇게 되면 버전 문제인지, 라이브러리 os별지원 문제인지, 런타임 문제인지 확인해야 될게 많아짐. 일일이 체크하고 조합테스트 해봐야될듯

0
2023.12.01
@6974

해결 했어요! 파이썬 버전 낮은걸로 바꾸니까 잘 돌아가네요

도움주셔서 감사 합니다~~!!!

0
2023.12.01
@층노숙자

https://wummel.github.io/patool/

 

그리고 공식사이트 보니까 라이브러리가 특정폴더에 있어야 호출되는데 tkinter가 얘도 래핑해주는지는 모르겠음. 이거 문제일수도 있으니 그 컴퓨터에서도 동일하게 라이브러리를 깔아봐야 알겠네

0
2023.12.01
@6974

오 감사합니다

또 회사가서 끄적여 볼게요

하루죙일 잡고있으면 그래도

뭔가 되긴하드라고요 ㅎ

0
2023.12.01

파이썬이 이것저것 짜긴 편한데 배포가 어려움..

0
2023.12.05

파이썬 제대로 쓸라면 가상환경이나 콘테이너로 파이썬 버전 관리, 패키지 버전 관리를 격리시켜주는거 젤 기본적으로 해야 됨..

0
2023.12.05
@랩실탈출하자

어제 가상환경 설정하는거 알게 되었어요

역시나 이런 문제를 처음부터

관리하는법이 있었네요

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
5695 [프로그래밍] 윈도우 부팅화면 봐주실분 바나나맛두부 0 1 일 전 142
5694 [프로그래밍] 아 시발 퇴사마렵다 9 인간지표 0 2 일 전 341
5693 [프로그래밍] C#이 ㅈ사기 언어인 이유 19 ye 4 2 일 전 858
5692 [프로그래밍] 요즘 모바일 개발은 어떤 걸 사용하나요? 13 커피좋아용 0 4 일 전 357
5691 [프로그래밍] 취준생 안드로이드 팀플 주제 머할까요... 8 조강현 0 5 일 전 243
5690 [프로그래밍] 공통코드테이블은 대체 왜 만드냐 9 잠적자 0 6 일 전 441
5689 [프로그래밍] 토이프로젝트 주제 선정 3 개드립눈팅1세대 0 6 일 전 240
5688 [프로그래밍] 엥 구글 플러터 유기각 재는거임?? 4 최수연 0 9 일 전 373
5687 [프로그래밍] 반도체 장비 업계인 있음? 9 캡틴띠모 0 9 일 전 306
5686 [프로그래밍] 안드로이드 책 추천좀 6 집에가게해줘 0 10 일 전 164
5685 [프로그래밍] 폰 스크리닝 해 본 사람 있어? 3 무지개빛푸딩 0 11 일 전 406
5684 [프로그래밍] jsp 트리메뉴 만들고있는데 구상한게가능한지 의견좀물어볼께 11 평택국 0 11 일 전 181
5683 [프로그래밍] JPA 도와줘어억 ㅠ 10 모그리또 0 11 일 전 272
5682 [프로그래밍] 의사는 뽑는 인원 제한하는데 부캠은 왜 제한 안 할까 5 조강현 0 13 일 전 390
5681 [프로그래밍] 그 혹시 게임쪽 종사자 있음? 17 god79ii 0 17 일 전 650
5680 [프로그래밍] 코린이 ㅅㅂ 뭐가 문젠지 모르겠어요 9 집에가게해줘 0 17 일 전 473
5679 [프로그래밍] Dear Imgui 라고 아시나요? 2 년째모쏠 0 18 일 전 255
5678 [프로그래밍] 현업개발자분들 주말엔 편하게 쉴수있나요? 10 키로 0 18 일 전 898
5677 [프로그래밍] 무엇이든 물어보세요. 28 변현제 0 20 일 전 436
5676 [프로그래밍] 개발자보단 엔지니어가 취업이 잘됨 5 iillillill 2 21 일 전 780