2019年,每日一份调研调研报告(工作日)。
文件名需要包含对应日期,例如:调研报告2019-XX-XX.docx。
文档内需要修改成对应日期,修改替换指定内容
需要先安装requests、docx库
# -*- coding: utf-8 -*-
import os
import json
import time
import requests
from docx import Document
def Data_Loading():
#遍历当前目录下,以docx为后缀的文件
for parent, dirnames, filenames in os.walk('.', topdown=False):
for filename in filenames:
if filename[-5:] == '.docx':
return filename
def Is_Exists(dirname):
#判断目录是否存在
if not os.path.exists(dirname):
os.makedirs(dirname)
def Is_Weekday(M,D,dirname,filename):
#提交参数给服务器,返回json格式的参数,0为工作日,1为休息日,2为节假日。每次GET请求后,设置睡眠时间,避免短时间请求并发数过多,导致服务器判别为流量型攻击主动断开连接,或者服务器崩溃
req = requests.get('http://www.easybots.cn/api/holiday.php?d=2019' + M + D)
vop_data = json.loads(req.text)
time.sleep(10)
if int(vop_data['2019' + M + D]) == 0:
Update_Data(M,D,dirname,filename)
def Update_Data(M,D,dirname,filename):
#Docx读写,定位需修改的元素,并进行替换,最后保存
doc = Document(filename)
tables = doc.tables
table = tables[0]
# 修改日期
data = str(M + '-' + D)
old_data = table.cell(3, 2).text[-5:]
new_data = table.cell(3, 2).text[-5:].replace(old_data, data)
old_text = table.cell(3, 2).text
text = table.cell(3, 2).text[0:-5]
table.cell(3, 2).text = table.cell(3, 2).text.replace(old_text, text + new_data)
# 修改内容为“/”
old_state = table.cell(9, 6).text
table.cell(9, 6).text = old_state.replace(old_state, '/')
#在指定的位置填入参数 “无”
old_thing = table.cell(-1,0).text
table.cell(-1, 0).text = old_thing.replace(old_thing, '无')
doc.save(dirname+'/'+M+'月/'+filename[0:-10]+M+'-'+D+'.docx')
def Resolution_Date(dirname,filename):
#辨别大小月
for M in range(1, 13):
M = str(M).zfill(2) # 指定字符串的长度为2,长度不够就在前面填充0
Is_Exists(dirname + '/' + M + '月')
if M in ('01', '03', '05', '07', '08', '10', '12'):
for D in range(1, 32):
D = str(D).zfill(2) # 指定字符串的长度为2,长度不够就在前面填充0
Is_Weekday(M,D,dirname,filename)
elif M in ('04', '06', '09', '11'):
for D in range(1, 31):
D = str(D).zfill(2) # 指定字符串的长度为2,长度不够就在前面填充0
Is_Weekday(M,D,dirname,filename)
elif M == '02':
for D in range(1, 29):
D = str(D).zfill(2) # 指定字符串的长度为2,长度不够就在前面填充0
Is_Weekday(M,D,dirname,filename)
else:
print('脚本运行异常!')
def Main():
filename1 = Data_Loading()
dirname1 = input('请输入输出根目录的名称:')
Is_Exists(dirname1)
Resolution_Date(dirname1,filename1)
if __name__ == '__main__':
Main()
一开始因为疏忽,word文档内容只修改日期,没有替换修改其他内容。完善代码后,懒得在等待所有文档重新生成,所以,再写了以下脚本。
# -*- coding: utf-8 -*-
from docx import Document
import os
for parent, dirnames, filenames in os.walk('.'):
for filename in filenames:
if filename[-5:] == '.docx':
path = os.path.join(parent, filename)#获取所有docx文件的路径
doc = Document(path)#打开docx文档
tables = doc.tables#获取文档内所有表格,形成表格集
table = tables[0]
old_thing = table.cell(-1, 0).text
table.cell(-1, 0).text = old_thing.replace(old_thing, '无')
doc.save(path)