【Python-docx】초 번거로움 냄새, NDA 작성을 10초로 처리한 이야기!
15111 단어 파이썬Python3python-docx
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
Reference
이 문제에 관하여(【Python-docx】초 번거로움 냄새, NDA 작성을 10초로 처리한 이야기!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/naiveprince0507/items/73aa5ae69884dc00d6c6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)