日常工作輔組 zipfile用法總結

2021-09-26 22:55:14 字數 3432 閱讀 8620

最近陸續把日常工作中每天重複的勞動,比如比對,校驗,簡單的工作,都實現了一鍵化,為此省卻了不少時間

此為磨刀不誤砍柴工

越來越懶,不解釋,直接上**

# coding:utf-8

import zipfile

import os

import shutil

import pdb

def create_zip(src, dst,flag=true):

"""對指定檔案下的檔案或子資料夾進行壓縮(空目錄也會被壓縮)

:param src: 被壓縮的資料夾或者檔案

:param dst: 壓縮檔案儲存路徑+***x.zip

:param flag: true,打包時帶上目錄,false,打包時不帶上當前目錄

:return: 無

"""zip = zipfile.zipfile(dst, "w", zipfile.zip_deflated)

if os.path.isdir(src): # 如果src是乙個目錄

if flag:#true,打包時帶上目錄

src_dir = os.path.split(src)[-1]

else:#false,打包時不帶上當前目錄

src_dir = ''

for root, dirs, filenames in os.walk(src):

# zip中的路徑是相對路徑

relative_path = root.replace(src, '')

zip_path = src_dir + relative_path

for filename in filenames:

root_with_filename = os.path.join(root, filename)

child_path_with_filename = os.path.join(zip_path, filename)

zip.write(root_with_filename, child_path_with_filename)

for dir in dirs:#如果目錄下沒有檔案也要把目錄也壓縮進去

abs_path = os.path.join(root,dir)

zip_path = os.path.join(src_dir,dir)

zip.write(abs_path,zip_path)

if os.path.isfile(src): # 如果src是乙個檔案

filename = os.path.split(src)[-1]

zip.write(src, filename)

zip.setpassword('123') #設定加密

zip.close()

def read_zip(dst):

"""讀取zip包中每個檔案的內容

:param dst: zip檔案

:return: 無

"""if zipfile.is_zipfile(dst):

num = 0

with zipfile.zipfile(dst,mode='r') as z:

for file in z.namelist():

print(file,os.path.isfile(file))

if os.path.isfile(file):

num += 1

with z.open(file) as fp:

print(fp.read())

if num == 0:

print('zip中檔案為空')

else:

print('這不是zip檔案')

def add_zip(dst,zip_path, file):

"""向已存在的zip包中指定目錄新增檔案

:param dst: zip檔案

:param zip_path: zip中路徑,如果zip_path不存在,則會自動建立對應的目錄

:param file: 要新增的檔案

:return: 無

"""if zipfile.is_zipfile(dst):

zip = zipfile.zipfile(dst, "a", zipfile.zip_deflated)

filename = os.path.split(file)[-1]

dist = os.path.join(zip_path, filename)

if dist.replace('\\','/') in zip.namelist():

print('存在同名檔案')

else:

zip.write(file, dist)

zip.close()

else:

print('這不是zip檔案')

def del_zip(dst,filename):

"""刪除zip中指定的檔案

:param dst: zip檔案

:param filename: 要刪除的資料夾名,不帶目錄

:return: 無

"""if zipfile.is_zipfile(dst):

zip_old = zipfile.zipfile(dst, "r", zipfile.zip_deflated)

old_zip_name = os.path.split(dst)[-1]

new_dst = os.path.split(dst)[0]+r'\new_'+old_zip_name

zip_new = zipfile.zipfile(new_dst, "a", zipfile.zip_deflated)

name = zip_old.namelist()[:]

for name in list(set(name)):

sname = os.path.split(name)[-1]

if filename != sname:

buffer = zip_old.read(name)

zip_new.writestr(name,buffer)

zip_new.close()

zip_old.close()

shutil.move(new_dst,dst)

else:

print('這不是zip檔案')

def extract_zip(dst,to_path=none,password=none):

"""解壓檔案到指定目錄

:param dst: zip檔案

:param to_path: 要解壓的目錄

:param password: 解壓密碼

:return: 無

"""with zipfile.zipfile(dst) as z:

z.extractall(path=to_path,pwd=password.encode('utf8'))

pass

日常工作積累

一 如果hive中的表儲存為parquet的格式,假如我們要改字段的名字,那麼改完字段後,該字段的資料全變為null 二 kill掉正在執行的hive任務 三 字母 漢字 數字所佔位元組 乙個字母 1個位元組 乙個數字 1個位元組 乙個漢字 2個位元組 四 算法官網 五 我們在做hive的表的時候,...

DBA日常工作

dba 職責及日常工作職責 1.安裝和公升級資料庫伺服器,以及應用程式工具構建和配置網路環境.2.熟悉資料庫系統的儲存結構 未來的儲存需求,制訂資料庫的儲存方案.3.根據開發人員設計的應用系統需求建立資料庫儲存結構.4.根據開發人員設計的應用系統需求建立資料庫物件 5.根據開發人員的反饋資訊,在必要...

SAP HANA DBA日常工作

sap hana dba日常工作手冊 一 日常性工作 1.系統執行環境的監控。檢視磁碟空間 方法1 通過sap hana studio administration editor volumes tab去監控磁碟使用。這種方式可以看到詳細的磁碟使用情況,可以檢視到每個服務占用了多少磁碟空間等等。方法...