파일마다 다른 PW로 zip 암호화하는 작업의 인인화. 3인일 걸려 있던 작업을 1초에 처리한 이야기. 【완성판】
한 달 전에, "월초 엑셀 집계 처리를 완전 자동화하고, 100명 일을 걸고 있던 작업을 1초로 처리한 이야기.【완성판】을 썼습니다.→ htps : // m / no ゔ p 린세 0507 / ms / 3 4d322f7f1c3068487
그것의 제2탄이 됩니다.
===========
1. 상황 설명
아래와 같은 고객별로 송부하는 PDF 파일이 있다고 합니다.
손님에게 메일로 송신할 때에, 각각의 pdf 파일에, 별개의 패스워드로 ZIP 암호화를 걸어, 손님처 송신이라고 하는 것은 자주 있다고 생각합니다.
2. 평범한 방법
PW 자동 생성 소프트나 사이트를 사용해, PW를 작성해, 그것을 하나씩 복사해, Lhaplus 같은 ZIP 암호화 파일 작성 툴을 사용해, 하나씩 암호화 파일을 작성해 가 필요 있습니다.
암호 작성 사이트 → htps //w w.ぅft. 이. jp/c 기/란다 m. php
3. 「보통의 방법」의 과제
말할 필요도 없이, 귀찮아.
「ABC Co에는 이 PW로, OPQ Co에는, 저쪽의 PW」라고 정리하는 것도 번거롭다.
이 예에서는, 단지 3개의 PDF이지만, 실무에서는, 수십의 PDF를 처리하기 때문에, 3인 일위는 보통으로 걸렸다.
4. 절력화
파이썬으로 초당 처리합니다.
PW 만들기 Python 모듈의 pyminizip을 사용합니다.
이 사이트가 제일 알기 쉬웠다.
pyminizip으로 zip 파일에 비밀번호 설정하기 [Python] → https://self-development.info/pyminizip%E3%81%AB%E3%82%88%E3%82%8Azip%E3%83%95%E3%82%A1%E3%82%A4%E3% 83%AB%E3%81%AB%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%82%92%E8%A8% AD%E5%AE%9A%E3%81%99%E3%82%8B%E3%80%90python%E3%80%91/
나는 Windows10 환경에서 했지만 pyminizip 환경 설정 (Microsoft C++ Build Tools 설치)으로 조금 막혔습니다.
「pyminizi는 Minizip의 Python용 Wrapper」이므로, Microsoft C++ Build Tools의 인스톨이 필요하다는 것. (여기는 위의 기사에 자세히 쓰여져 있습니다.)
5. 최종 코드
아래와 같습니다.
우선, pyminizip으로 PW를 pdf의 수만큼 작성하고, 그 후, 작성한 PW를 차례로 PDF에 할당해 ZIP 파일을 작성한다.
마지막으로, 파일명(고객명)과 PW를 묶은 PW리스트를 내뿜는다.
<2021년 8월 6일 프로그램 수정>
들여쓰기가 일부(2곳) 이상했기 때문에 수정.
또한 실행 후 Warning이 나오므로 "warnings.simplefilter("ignore")"로 지웠다.
invoice_setup.py
import os
import string
import secrets
import pyminizip
import warnings
warnings.simplefilter("ignore")
def pass_gen(size=12):
chars = string.ascii_uppercase + string.ascii_lowercase + string.digits
return ''.join(secrets.choice(chars) for x in range(size))
fileExt=r".pdf"
print([_ for _ in os.listdir() if _.endswith(fileExt)])
x=[_ for _ in os.listdir() if _.endswith(fileExt)]
y=[]
for i in range(len(x)):
z=pass_gen(10)
print(z)
y.append(z)
i=i+1
print(y)
for j in range(len(x)):
pyminizip.compress(x[j], "", "zipped_"+x[j]+".zip", y[j], 0)
continue
j=j+1
f=open('pw_list.txt','w',encoding='UTF-8')
for j in range(len(x)):
f.write("Name: "+x[j]+" / "+"pw: "+y[j]+"\n")
j=j+1
f.close
6.
실행하면 폴더는 다음과 같습니다.
C:\Users\xyz\Desktop\xxx_june\test\testx>Tree/F
フォルダー パスの一覧
ボリューム シリアル番号は 2E48-BBB4 です
C:.
ABC_co.pdf
invoice_setup.py
OPQ_co.pdf
pw_list.txt
XYZ_co.pdf
zipped_ABC_co.pdf.zip
zipped_OPQ_co.pdf.zip
zipped_XYZ_co.pdf.zip
サブフォルダーは存在しません
Name: ABC_co.pdf / pw: w8RBAfkNHj
Name: OPQ_co.pdf / pw: 2QglGxwGPR
Name: XYZ_co.pdf / pw: emny0xWKFc
Reference
이 문제에 관하여(파일마다 다른 PW로 zip 암호화하는 작업의 인인화. 3인일 걸려 있던 작업을 1초에 처리한 이야기. 【완성판】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/naiveprince0507/items/c26ce485ee214b7aff52텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)