當有大批的檔案,並且存放在不同的資料夾中,需要你進行加密壓縮時,可參照此**;
在**中,由於個人需要,提取了各個檔案的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 遞迴,將指定目錄下的所有檔案和...