본문 바로가기

압축풀기3

압축 파일 안에 뭐가 들었는지, 풀지 않고 확인하고 필요한 것만 꺼내기 메일로 받은 ZIP이 수백 메가바이트인데 필요한 건 그 안의 문서 한 장입니다. 확인하려고 전부 풀면 디스크가 차고, 다 풀고 나서 원하던 파일이 아니면 지우는 일이 또 남습니다.ZIP은 맨 뒤에 목차를 따로 들고 있는 형식이라 풀지 않고도 안을 볼 수 있습니다. 얼마나 적게 읽고도 되는지, 텍스트 300개가 든 압축 파일로 하는 일마다 디스크에서 실제로 읽은 양을 세어 봤습니다. 목록을 보는 데 0.3퍼센트면 충분했습니다5,765,439바이트짜리 ZIP에서 파일 목록과 각 파일의 원본 크기를 읽어 봤습니다. 디스크에서 실제로 읽은 양은 19,542바이트였습니다.하는 일실제로 읽은 바이트압축 파일 대비걸린 시간목록만 보기19,542 B0.3 %5.1 ms한 개만 꺼내기38,709 B0.7 %3.9 ms전.. 2026. 9. 30.
ZIP이 손상되었다고 뜰 때, 어디가 깨졌는지부터 확인하면 살릴 수 있습니다 메일로 받은 압축 파일을 열었더니 손상되었다는 메시지만 뜨고 안이 보이지 않습니다. 보낸 쪽에 다시 요청하는 것 말고 방법이 없어 보입니다.그런데 ZIP은 통째로 하나가 아니라 파일마다 따로 담기고 맨 끝에 목록이 붙는 구조라, 깨진 자리에 따라 살릴 수 있는 양이 완전히 달라집니다. 정상 ZIP의 바이트를 위치별로 직접 망가뜨려 증상이 어떻게 갈리는지 재현해 봤습니다. ZIP은 앞에 파일, 맨 끝에 목록입니다ZIP 안에는 파일이 하나씩 순서대로 들어갑니다. 각 파일 앞에는 이름과 크기, 검사값을 적은 짧은 머리말이 붙고, 압축된 내용이 그 뒤에 이어집니다.그리고 맨 끝에 전체 목록이 한 번 더 붙습니다. 압축 프로그램이 파일을 열자마자 안에 무엇이 들었는지 바로 보여 줄 수 있는 것은 이 목록 덕분입.. 2026. 8. 30.
ZIP 압축을 풀었더니 파일명이 ║╕░φ╝¡ 처럼 깨질 때, 원인과 해결 받은 압축 파일을 풀었더니 안에 든 한글 파일명이 ║╕░φ╝¡.txt 같은 외계어나 물음표(???)로 바뀌어 있는 경우가 있습니다. 정작 파일을 열면 내용은 멀쩡한데 이름만 알아볼 수 없습니다.압축 파일 자체는 멀쩡합니다. ZIP이 파일명을 저장하는 방식과, 압축을 푸는 프로그램이 그 이름을 읽는 방식이 어긋났을 뿐입니다. 윈도우 11과 파이썬 3.14.3 표준 라이브러리 zipfile로 직접 만들어 확인한 결과를 근거로 풀어 보겠습니다. ZIP은 파일명을 어떻게 저장하나ZIP 안에는 각 파일의 이름이 바이트로 적혀 있고, "이 이름이 어떤 인코딩이냐"를 알려 주는 작은 표식이 따로 있습니다. ZIP 규격에서 이 표식은 일반 목적 플래그의 11번째 비트, 값으로는 0x800입니다.이 비트가 켜져 있으면 .. 2026. 7. 16.