python 批量加密壓縮檔案

2021-10-04 10:17:30 字數 3833 閱讀 6244

當有大批的檔案,並且存放在不同的資料夾中,需要你進行加密壓縮時,可參照此**;

在**中,由於個人需要,提取了各個檔案的hash,並以檔案的sha256作為最終壓縮儲存的檔名;

1、在網上查詢了python自帶庫,python並沒有能進行加密壓縮的自帶庫,能進行壓縮的擴zipfile,看大多數網友所說加密並不生效,只能進行壓縮,因此這裡引用了dos命令,通過winrar進行加密壓縮;

3、winrarpath為:winrar的安裝路徑,找到rar.exe;這裡需要rar.rxr的完整路徑,剛開始給rar.exe設定了環境變數,但是通過python呼叫dos時出現了錯誤;

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @time : 2020/3/25 20:37

# @author : h

# @file : zipfilev2.py

import os

import hashlib

import time

from shutil import copyfile

defgetfielpath

(path, sub)

:if os.path.isdir(path)

:# 如果絕對路徑下的資料夾

for i in os.listdir(path)

:# i檔名

path2 = os.path.join(path, i)

# 拼接絕對路徑

if os.path.isdir(path2)

:# 判斷如果是資料夾,呼叫本身

getfielpath(path2, sub)

else

:elif os.path.isfile(path)

:# 如果絕對路徑下的檔案

else

:print

("file or path doesn\'t exit"

)def

zipfile

(filepath, winrarpath, password, apt=

none):

oldname = filepath.split(

'\\')[

-1]"""獲取檔案的hash"""

datas =

# 結果存為json,以便後需

f =open

(filepath,

"rb"

) rb = f.read(

) data =

f.close(

)"""檔案hash由檔名構成詞典"""

datas[oldname]

= data

"""以檔案的sha256重新命名:若不重新命名則當檔名中有空格或特殊符號時,啟動dos命令會失敗"""

newfilename = filepath.replace(oldname, data[

'sha256'])

"""如果使用sha256命名的檔案已存在,說明兩個檔案的sha256值相同,即檔案重複,刪除檔案;否則重新命名"""

if os.path.exists(newfilename)

: os.remove(filepath)

return

1else

: os.rename(filepath, newfilename)

filepath = newfilename

"""輸出壓縮檔案的位置,即將壓縮檔案輸出到哪個資料夾中,壓縮檔案以檔案的 sha256.rar 命名"""

if os.path.exists(r'd:\zipsampletemp'):

pass

else

: os.makedirs(r'd:\zipsampletemp'

) outputpath = f"d:\\zipsampletemp\\"

"""如果壓縮檔案已存在,則說明錄入重複,刪除原始檔即可"""

if os.path.exists(outputpath +

".rar"):

print

(f"[-]--->壓縮檔案已存在:\t"

) os.remove(filepath)

return

1"""dos命令"""

cmdzip = f" a -ep -p "

try:

# dos呼叫winrar加密壓縮檔案

os.popen(cmdzip)

except exception as err:

print

(err)

with

open

("d:\\newsample.txt"

,"a"

, encoding=

"utf-8"

)as f:

if apt:

hashs = data[

'md5']+

"#"+ data[

'sha1']+

"#"+ data[

'sha256']+

"#"+ apt +

"\n"

else

: hashs = data[

'md5']+

"#"+ data[

'sha1']+

"#"+ data[

'sha256']+

"#"+

"\n"

f.writelines(hashs)

defunzipfile

(filepath, winrarpath, password, flag)

: outputpath =

"d:\\temptemp"

cmdunzip = f" e -p "

try:

# dos呼叫winrar加密壓縮檔案

os.popen(cmdunzip)

print

(f"[+]==>原始檔解壓成功:\t"

)if flag ==0:

# 刪除原有檔案

os.remove(filepath)

print

(f"[+]==>原始檔刪除成功:\t"

)elif flag ==1:

pass

except exception as err:

print

(err)

if __name__ ==

'__main__'

: winrarpath = r"d:\winrar\rar.exe"

password =

"這裡是設定的預設壓縮密碼"

path = r"c:\users\win10\desktop\samples\112\112\teamspy(45個)\1578467312"

# apt = 'unknown'

apt =

'teamspy crew'

sub =

getfielpath(path, sub)

for i in sub:

zipfile(i, winrarpath=winrarpath, password=password, apt=apt)

print

(f"[+]===>共計壓縮檔案個數:\t"

)# for i in sub:

# unzipfile(i, winrarpath=winrarpath, password=password, flag = flag)

怎樣壓縮檔案 如何給壓縮檔案加密

我們生活 工作中,會經常遇到壓縮檔案 給檔案加密的事情。有時候,是單純不想讓別人看到 有時候,是提供 但不能共享,用來獲取收益等等。那麼怎麼將乙個檔案壓縮,或者乙個資料夾壓縮尼?同時又怎麼給這個壓縮檔案加密尼?下面大家和小編一起看一下吧。壓縮檔案 如圖。找到需要壓縮的檔案 資料夾,右擊檔案,點選新增...

Mac加密壓縮檔案

今天想給檔案壓縮時加密,發現這款軟體還不支援。zip命令 使用方法 zip 壓縮後檔案的名字.zip 待壓縮的檔案名字.檔案格式 如 cd users a desktop zip a.zip users a documents a.txt 如需加密 zip e a.zip users a docum...

linux下zip加密壓縮檔案

zip q r p passwordzipfile.zip sourcefiles.txt password 是加密密碼 zipfile.zip 是生成的壓縮檔案 sourcefiles.txt 是被壓縮的檔案 zip 引數 壓縮包 原始檔 使用zip格式打包檔案 r 遞迴,將指定目錄下的所有檔案和...