2016-04-21 161 views
0

我有這樣的代碼:如何從ZIP檔案只提取MP3文件

from zipfile import ZipFile 
import os 
import glob 
inp = raw_input("Specify a ZIP archive to extract:") 
with ZipFile(inp) as zf: 
    zf.extractall() 

,因爲它提取的所有文件,但我怎麼提取所有的歸檔的.mp3文件它工作正常用戶指定。

+1

通過「mp3文件」,你的意思是「文件的名稱以'.mp3'結尾」,還是你的意思是「文件是有效的MP3文件,無論其文件名」?前者更容易。 –

+0

任何可以做到的,mp3的名稱在每個存檔中都是不同的,並且保證只有一個。 –

回答

1

從ZIP壓縮文件只提取MP3文件,你可以做到以下幾點:

from zipfile import ZipFile 
import os 

zip_file = r"c:\folder\myzip.zip" 
target_folder = r"C:\Users\Fred\Desktop" 

with ZipFile(zip_file, 'r') as my_zip: 
    mp3_files = [name for name in my_zip.namelist() if os.path.splitext(name)[1].lower() == '.mp3'] 
    my_zip.extractall(target_folder, mp3_files) 

的ZIP文件中的文件列表可以使用namelist函數來獲得。有了這個,你可以過濾那些以mp3擴展名結尾的文件。 extractall函數可讓您傳遞要提取的所有文件的列表(默認爲所有文件)。

1

您可以在列表中的成員get a list of the names,只有extract以後綴.mp3結尾。

+0

爲python 2做這個工作嗎? –

+1

@Sol:從2.6開始。猜猜在Joachim的URL中要更改哪個單個字符以找到Python 2文檔;-) –

+0

愚蠢的問題,但是如何提取僅以.mp3結尾的文件? –