2014-11-28 7 views
0

파일을 특정 폴더로 옮기는 데 아래 코드를 사용합니다. 그러나 결국에는 어떻게 그 폴더를 압축 할 수 있는지 모르겠습니다. 참고 : 파일을 압축하기 위해 shutil 모듈을 사용하고 싶습니다.shutil 모듈을 사용하여 파일 압축하기

import shutil 
import os 
source="/tmp/" 
destination1="/tmp/music/" 
destination2="/tmp/picture/" 
destination3="/tmp/video/" 

if not os.path.exists(destination1): 
    os.makedirs(destination1) 
if not os.path.exists(destination2): 
    os.makedirs(destination2) 
if not os.path.exists(destination3): 
os.makedirs(destination3) 

for f in os.listdir(source): 
    if f.endswith(".MP3") or f.endswith(".wma") or f.endswith(".WMA") or f.endswith(".mp3") : 
     shutil.move(source + f,destination1) 
    if f.endswith(".png") or f.endswith(".PNG") or f.endswith(".jpg") or f.endswith(".JPG") or f.endswith(".GIF") or f.endswith(".gif"): 
     shutil.move(source + f,destination2) 
    if f.endswith(".MP4") or f.endswith(".mp4") or f.endswith(".WMV") or f.endswith(".FLV") or f.endswith(".flv") or f.endswith(".wmv"): 
     shutil.move(source + f,destination3) 

#now zipping: 

shutil.make_archive("archive",'zip',"/tmp/","music"+"video"+"picture") 

답변

1
"music"+"video"+"picture" 

당신에게 제공

'musicvideopicture' 

하게 될 것이다 가장 간단한 방법 디렉토리/tmp를/보관/거기에 음악, 비디오, 사진, 다음

shutil.make_archive("archive",'zip',"/tmp/archive") 

편집 : gztar를 사용하는 것이 좋습니다.

Edit2가이 :

import shutil 
import os 
source = "/tmp/" 
dest_base = "/tmp/archive/" 
destination1 = dest_base + "music/" 
destination2 = dest_base + "picture/" 
destination3 = dest_base + "video/" 

audio_ext = ('mp3', 'wma') 
pictu_ext = ('png', 'jpg', 'gif') 
video_ext = ('mp4', 'wmv', 'flv', 'avi') 

if not os.path.exists(destination1): 
    os.makedirs(destination1) 
if not os.path.exists(destination2): 
    os.makedirs(destination2) 
if not os.path.exists(destination3): 
    os.makedirs(destination3) 

for f in os.listdir(source): 
    ext = f.split('.')[-1].lower() 
    if ext in audio_ext: 
     shutil.move(source + f, destination1) 
    elif ext in pictu_ext: 
     shutil.move(source + f, destination2) 
    elif ext in video_ext: 
     shutil.move(source + f, destination3) 

#now zipping: 
shutil.make_archive("archive", 'gztar', "/tmp/archive") 
+0

나는 이것을 사용하지만 내 압축 파일을 바탕 화면에 저장 이유를 모르겠어. – Hadi

+0

스크립트는 대상을 지정하려면 작업 디렉토리 –

+0

에 아카이브를 만들어야하며 다음과 같이 make_archive와 같이 입력하십시오. shutil.make_archive ("/ home/my_archives/archive", 'gztar', "/ tmp/archive") ommit 확장. make_archive는 .zip 또는 tar.gz 자체를 추가 할 것입니다.) –