本人小白,学 python 一个多月,想自动化一些办公流程,所以就写了个将目录下所有 word 文件遍历,再将制定列复制到 excel 的程序。
测试优化了一个星期,然后发现了一个以我现在的了解无法解决的问题。同样是将 1300 行传送到 excel 中,我用程序跑 13 个 100 行的文件用不到 20 秒,但如果是跑一个大文件就要用 200 秒。期初我以为是 list 太大了,改成每 100 行传送一次,而不是一个大 list ,然后运行时间没有丝毫改变。。。
我觉得是 list 存取什么的问题?不太懂,所以求助啊~~~
代码如下
import os
from openpyxl import Workbook
from openpyxl.styles import PatternFill
from docx import Document
import re
import time
#excel part
wb = Workbook()
ws = wb.active
fil = PatternFill(start_color='FFFF00', end_color='FFFF00',fill_type='solid')
#os part
dest_dir = input('请输入外部审校文件所在路径。\n>').replace("\\", "/")
def copy(range):
return str(t.cell(range, 2).text)
def del_blank(text):
return text != ''
def clean_tag(text2):
return re.sub('<'r'/?[a-z]{0,3}[0-9]{0,5}/?''>', '', text2)
for root, dirs, files in os.walk(dest_dir):
pass
for name in files:
t = Document(os.path.join(dest_dir, name)).tables[0]
ws.append({'B': name})
ws['B' + str(ws.max_row)].fill = fil
j = list(range(len(t.rows)))
r1 = list(map(clean_tag, filter(del_blank,map(copy, j))))
r2 = [n for n in range(len(t.rows))]
for row in zip(r2, r1):
ws.append(row)
wb.save(dest_dir + '/删重文件.xlsx')
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.