Python でディレクトリ以下のファイルのzip圧縮
zipfileモジュールを使う。
#!/usr/bin/python # -*- coding:sjis -*- import os import zipfile # 現在時間をフォーマットして文字列で返す def getDateStr(format='%Y%m%d_%H%M%S'): import datetime t = datetime.datetime.now() return t.strftime(format) ## dir_name ディレクトリ名 ## arc_dir 圧縮するディレクトリ名 ## zip_name 圧縮で生成されるファイル名 ## dir_name=/aa/bb/ arc_dir=ccの場合は、/aa/bb/のccディレクトリを圧縮する def zipDirectoryDir(dir_name, arc_dir, zip_name=None): if zip_name == None: tstr = getDateStr('_%Y%m%d_%H%M%S') zip_name = arc_dir + tstr + '.zip' print "zipDirectoryDir: ", dir_name, arc_dir, zip_name zipf = zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED) olddir = os.getcwd() os.chdir(dir_name) zip_gen = os.walk(arc_dir) for zip_me in zip_gen: # [rootname, dirnamelist, filenamelist ] for reg_file in zip_me[2]: # loop for finename write_file = os.path.join(zip_me[0], reg_file) arc_name = write_file # print "zip write: ", write_file, arc_name try: zipf.write(write_file, arc_name); except: print "ERROR: writing file =", write_file zipf.close() os.chdir(olddir) if __name__ == "__main__": zipDirectoryDir('/mydata/data/', 'data1')