파일마다 다른 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

サブフォルダーは存在しません

자동 작성된 PW 리스트의 내용은 아래와 같다.
Name: ABC_co.pdf / pw: w8RBAfkNHj
Name: OPQ_co.pdf / pw: 2QglGxwGPR
Name: XYZ_co.pdf / pw: emny0xWKFc

좋은 웹페이지 즐겨찾기