2017-03-10 2 views
0

extract_dirarchive의 내용을 압축 해제하는 코드가 있습니다. 그러나 추출 된 파일 경로를 가져 오는 방법을 알아낼 수 없습니다. & 추출 된 파일의 이름입니다.Python ZipFile이 파일 경로와 이름을 추출했습니다.

if archive.endswith((".zip")): 
    zip_ref = zipfile.ZipFile(archive, 'r') 
    zip_ref.extract(extract_dir) 
    zip_ref.close() 

는 예를 들어, 아카이브 test.zip라고하며 ZipFile에이 내용이 내가 변수에 C:/windows/users/admin/downloads/test.exe을 얻을 원하는 test.exe 추출?

편집 : 죄송합니다. zipfile에 대한 소스 코드에서 명확하지 않았습니다. 어떻게 얻을 수 있는지 궁금합니다.

+0

zip에 여러 파일이 있으면 어떻게됩니까? –

+0

그건 zipfile 문제가 아닙니다. 특정 위치로 파일을 추출한 경우 (그리고 분명히 위치를 알고있는 경우) 파일을 가져 오려면, 예를 들어 다음과 같이해야합니다. 'os.walk'을 사용하여 모든 파일을 데이터 구조로 가져옵니다. – nir0s

+0

'path' 인수를'ZipFile.extract'에 지정하지 않으면 아카이브 멤버가 현재 작업 디렉토리로 추출됩니다. ['zip_ref.namelist()'] (https://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.namelist)를 사용하여 이름으로 아카이브 멤버 목록을 가져올 수 있습니다. –

답변

1

여기 해결책입니다. 2 일 동안 답변을 수락 할 수 없습니다.

if archive.endswith((".zip")): 
    print "example.jpg" 
    zip_ref = zipfile.ZipFile(archive, 'r') 
    extracted = zip_ref.namelist() 
    zip_ref.extractall(extract_dir) 
    zip_ref.close() 
    extracted_file = os.path.join(extract_dir, extracted[0])