2017-10-25 7 views
2

전체 stackoverflow를 검색하여 zip 파일 경로에서 하위 폴더의 이름 만 추출하는 방법에 대한 아이디어를 얻었습니다. zip 파일의 폴더 이름 가져 오기 - Python

나는 우편 경로 얻기 위해 Tkinter를 사용하여 시도 :

Import os 
from tkinter import filedialog 
import tkinter as tk 
from zipfile import ZipFile 

root = tk.Tk() 
root.withdraw() 
root.filename = filedialog.askopenfilename(initialdir=os.getcwd(), title="Select file", filetypes=[("zip", "*.zip")]) 

를 잘하면 모든 하위 폴더의 이름을 얻기 위해 ZipFile를하고 이름 목록을 사용했다.

['CS10/', 'CS10/.DS_Store', '__MACOSX/', '__MACOSX/CS10/', '__MACOSX/CS10/._.DS_Store', etc........ 

난 그냥이 경우 CS10 등등에있는 폴더 이름을 얻을 수있는 방법이 있는지 알고 싶어

with ZipFile(root.filename, 'r') as f: 
    names = f.namelist() 

그러나 나는 것을 얻는다.

예 : I라는 3 개 폴더가있는 경우 : zip 파일 경로 (사용자/Kiona는/fruits.zip) 나는 [ '애플'을 인쇄 할 을 "사과", "오렌지", "배"를, '오렌지' , 'Pear']

나는 파이썬으로 아주 새롭다. 그래서 나는 이것이 매우 어리석은 문제처럼 들리지 않기를 바란다.

건배!

+1

https://docs.python.org/3.6/library/zipfile.html#zipfile.ZipInfo.is_dir 보면, 참고로

with ZipFile(root.filename, 'r') as f: names = [info.filename for info in f.infolist() if info.is_dir()] 

'/' 첫 번째 문자열 만 가져옵니다 (하나 이상의 문자열이있는 한). '__MACOSX'디렉토리를 제외하려면 결과에서 제외 할 이름 목록과 결과에 포함되지 않는지 확인하는 목록을 정의하기 만하면됩니다. –

+0

질문에 약간 혼란 스럽습니다. zip 파일은 여러 개의 디렉토리와 파일을 포함 할 수 있으며 그 안에 임의의 레이아웃을 가질 수 있습니다. 'namelist()'는 모든 디렉토리의 디렉토리와 파일에있는 전체 경로를 반환합니다. 어떤 폴더 이름을 결정하려고합니까? – Iguananaut

+0

고마워요 @ 폴 루니, 모든 플랫폼과 모든 종류의 폴더를 내 코드에 사용할 수 있도록하고 싶습니다. "/"로 끝나고 "__"을 포함하지 않고 있지만 다른 플랫폼 (예 : Windows)을 사용하면 필요한 항목이 줄어들 수 있습니다. – Flora

답변