【Python-docx】초 번거로움 냄새, NDA 작성을 10초로 처리한 이야기!

NDA(Non Disclosure Agreement) 작성의 이야기입니다.
21세기 사업가에게는 피할 수 없는 화제입니다.
저도 아침부터 저녁까지 잠재 고객과의 NDA 체결 작업을 하고 있습니다.
(영업 교섭보다 NDA 체결 쪽에 시간이 걸리고 있습니다.)

이 NDA이지만 회사마다 형식이 다릅니다.
다만, 넷으로 구르고 있는 샘플로서는, 예를 들면, 아래와 같습니다.
h tps : // ぇ가 l로 mpぁ하고 s. 네 t / 후 rm / 논 - ぢ sc



1. 무엇이 문제인가? 왜 시간이 걸리는가?

예를 들어, "날짜", "Disclosing Party", "Receiving Party"
일일이, 워드를 열어 기입하지 않으면 안됩니다.
이 워드에 기입하는 작업입니다만, 실제로 몇통이나 NDA를 쓰고 있으면 매우 귀찮습니다.
아래에 과제가 있습니다.
・동일한 포맷을 사용해도, 복수의 NDA를 쓰는 경우는, 어느 Word 파일에 어느 객선명을 쓴지 모르게 된다.
・ 원래, Word를 열어 일자를 1장씩에 써 가는 것도, 실은 꽤 귀찮다. (해보면 알 수 있지만 Word 편집은 텍스트 파일 편집만큼 간단하지 않습니다.)
· 고객 송부 전에 ZIP 암호화해야 하지만 어떤 고객 파일에 어떤 암호를 사용했는가? 관리가 어렵습니다. (대개 번역을 모른다.)

2. 개선안

라는 뜻으로 Python-docx로 순식간에 처리합니다.
아래와 같이 NDA와 프로그램을 함께 넣어 둡니다.


그리고 실행.
C:\Users\user_XXX\Desktop\CODE>python sample_replace1.py
네. 이것뿐입니다.

코드는 이쪽.
고객 이름(Sample LTD)과 당사 이름(Test Japan co.)은 코드 내에 기재되어 있습니다.
물론, 별도 파일로 해, 거기로부터, For문으로 차례로 주워, 「대입」해, 연속 작성하는 일도 가능합니다.

sample_replace1.py
import docx
import datetime
import docx
from docx.oxml.ns import qn
import os
# pass_gen.py
import string
import secrets
import pyminizip


doc = docx.Document("non-disclosure-agreement.docx")
num = 0

dt=datetime.datetime.now()


x=dt.strftime('%B')

DP="Sample.LTD" #顧客名称
RP="Test Japan co." #弊社名称



for para in doc.paragraphs:
    num = num + 1

    f=para.text
    f=f.replace("ABC",f'{DP}')#雛形に記載のABCを置き換え。
    f=f.replace("XYZ",f'{RP}') #雛形に記載のXYZを置き換え。

    #NDAの締結目的を置き換え。
    f=f.replace("as of ____________________, 20______ (the “Effective Date”) by and between:", f'as {dt.day}th day of {x},{dt.year} ')
    f=f.replace("relationship relating to: __________________________________________(the “Transaction”). ", f'relationship relating to: ____Establishing Sales Strategy____ (the “Transaction”).')

    para.text=f

    para.runs[0].font.size = docx.shared.Pt(9)
    print(num, para.text)

doc.save(f'{DP}_non-disclosure-agreement.docx')

filename=f'{DP}_non-disclosure-agreement.docx'

print(filename)
doc = docx.Document(filename)
font = doc.styles['Normal'].font
font.name = u'Times New Roman' #Times New Romanを指定。何でもOKです。

doc.save(f'{DP}_non-disclosure-agreement.docx')


print(f'this {dt.day}th day of {x},{dt.year}')


def pass_gen(size=12):#暗号化処理
    chars = string.ascii_uppercase + string.ascii_lowercase + string.digits
    # 記号を含める場合
    # chars += '%&$#()'

    return ''.join(secrets.choice(chars) for x in range(size))

fileExt=r".docx"
print([_ for _ in os.listdir() if _.endswith(fileExt)])

x=[_ for _ in os.listdir() if _.endswith(fileExt)]


y=[]
for i in range(len(x)):
#   print(pass_gen(10))
    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]+" ")
    f.write("Name: "+x[j]+" / "+"pw: "+y[j]+"\n")
    j=j+1
    f.close


3.
결과는 다음과 같습니다.


Sample.LTD는 "sFddqf7HQT"로 ZIP 암호화되었음을 알 수 있습니다.

의 내용
Name: non-disclosure-agreement.docx / pw: 9RxCkFuPvR
Name: Sample.LTD_non-disclosure-agreement.docx / pw: sFddqf7HQT

좋은 웹페이지 즐겨찾기