2017-06-02 41 views
0

我一直在嘗試將多個python模塊添加到zip文件中。但是,由於新添加的模塊替換了之前的模塊,因此我不成功,並且我不瞭解這種關係。 command_utils添加一個util文件,下一個command_utils2添加另一個模塊,之後整個第一個模塊不見了。基本上我想在將zip文件從源代碼中取出之後,將我的模塊中的2個添加到zip文件中。這是我的代碼。如何將多個文件夾添加到一個zip文件(將folder1,folder2添加到包含幾個文件的myzip.zip filr)

import shutil 
import os 
import subprocess 

zip_name = os.getcwd().split("/")[-1] 

project_dir = '/tmp/' 

shutil.make_archive(zip_name, "zip", project_dir+"test/") 

os.chdir('/tmp/') 
command_utils = 'zip -r '+project_dir+'test/'+zip_name+'platformutils' 
print os.getcwd() 
command_utils2 = 'zip -r '+project_dir+'test/'+zip_name+' pytz' 
command_delete_archive = 'zip -d '+project_dir+'test/'+zip_name+'.zip '+zip_name+'.zip' 
# command_update_function = 'aws lambda update-function-code --function-name 
'+zip_name+' --zip-file fileb://'+project_dir+zip_name+'/'+zip_name+'.zip' 
# print command_utils 
print command_utils2 
print command_delete_archive 
# print command_update_function 
try: 
    # c_u = subprocess.Popen(command_utils, shell=True, stdout=subprocess.PIPE) 
    c_u2 = subprocess.Popen(command_utils2, shell=True, stdout=subprocess.PIPE) 
    c_d_a = subprocess.Popen(command_delete_archive, shell=True, stdout=subprocess.PIPE) 
    # p = subprocess.Popen(commands 
except subprocess.CalledProcessError as e: 
    raise e 
+1

可能的[如何創建目錄的zip存檔]的副本(https://stackoverflow.com/questions/1855095/how-to-create-a-zip-archive-of-a-directory ) –

+0

paco H.不,我已經看到了這個問題。我正在爲已經存在的zip文件添加幾個文件夾。我想將folder1和folder2添加到一個zip文件myZip.zip,該文件早先已經壓縮了很少的文件。我基本上想要實時添加文件夾到這個zip文件。 – ZZzzZZzz

+1

那麼也許這個? https://stackoverflow.com/questions/34270582/adding-file-to-existing-zipfile –

回答

2

使用zipfile模塊:

from zipfile import Zipfile 
myzipfile = ZipFile("spam.zip", mode='a') 
for mod_path in module_paths: 
    myzipfile.write(mod) 
myzipfile.close() 

通知我用a模式zip文件不w

如果模式爲 'a' 和文件指的是一個現有的ZIP文件,然後添加其他文件。如果文件沒有引用ZIP文件,則新的ZIP歸檔文件被追加到文件中。這是爲了將ZIP壓縮文件添加到另一個文件(如python.exe)。如果模式是'a'並且該文件根本不存在,則它被創建。

+0

這幫助和這個命令爲我做了伎倆 zip.write(path_to_file,os.path.basename(path_to_file)) – ZZzzZZzz

相關問題