精华内容
下载资源
问答
  • 所以加上.setRequestHeader("If-Modified-Since",日期)来告诉服务器上次加载过的该文件的时间,使其在修改后重新加载。 [color=red]但是如何通过js获取该资源留在缓存中的上次修改时间是关键!请大虾们指点![/...
  •  怎么防止企业电脑文件丢失是让很多电脑使用者感到头疼的事情,使用FileGee企业文件同步备份系统进行文件的定时、实时自动备份能够及时有效地防止企业电脑文件丢失情况的出现。现在小编就来告诉大家怎么定时备份...
  • %~tI - 将 %I 扩充到文件的日期/时间 %~zI - 将 %I 扩充到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个完全合格的名称。如果环境变量 未被定义,或者没有找到文件,此组合...
  • 每个栏目包括信息有:日期发文单位文号标题签收栏需要提取其中加粗这三项内容到Excel表格中存储,表格样式如下:也就是需要将收文时间、文件标题、文号填到指定位置,同时需要将时间修改为标准格...

    无论是身在职场的上班族,还是面临毕业的学生党。都会面临大量的Excel或Word文档要处理,今天给大家展示怎么用Python处理文档,以下面这份Word文档为例。

    168c8aa05a0118c101eee39fcab4906c.png

    一共有近2600条类似格式的表格细栏,每个栏目包括的信息有:

    • 日期

    • 发文单位

    • 文号

    • 标题

    • 签收栏

    需要提取其中加粗的这三项内容到Excel表格中存储,表格样式如下:

    bc253a8c2f029d7c3bf0ee5c94b25a2c.png

    也就是需要将收文时间、文件标题、文号填到指定位置,同时需要将时间修改为标准格式,如果是完全手动复制和修改时间,依照一个条目10s的时间计算,一分钟可以完成6条,那么最快也需要:640?wx_fmt=svge60059d748a57370abb8e6b3cc6eadb8.png这类格式规整的文件整理非常适合用Python来执行,好的那么接下来请Python出场,必要的信息我在代码中以注释信息呈现。640首先使用Python将Word文件导入
    # 导入需要的库docx
    from docx import Document

    # 指定文件存放的路径
    path = r'C:\Users\word.docx' 

    # 读取文件
    document = Document(path)

    # 读取word中的所有表格
    tables = document.tables
    再把问题逐个划分,首先尝试获取第一张表第一个文件条目的三个所需信息
    # 获取第一张表
    table0 = tables[0]

    仔细观察可以发现一个文件条目占据了3行,所以对表格全部行循环迭代时可以设步长为3

    667fba4afb862503929cbe497e3c64d2.png

    注意观察表格,按照row和cell把所需内容解析清楚

    # 在全局放一个变量用来计数填序号
    n = 0
    for i in range(0, len(table0.rows) + 1, 3):
        # 日期
        date = table0.cell(i, 1).text
        # 标题
        title = table0.cell(i + 1, 1).text.strip()
        # 文号
        dfn = tables[j].cell(i, 3).text.strip()
        print(n, date, tite, dfn)
    接下来需要解决的是,时间我们获取的是 2/1 这种 日/月的形式。我们需要转化成 YYYY-MM-DD格式,而这利用到datetime包的strptimestrftime函数:
    • strptime: 解析字符串中蕴含的时间

    • strftime: 转化成所需的时间格式

    import datetime

    n = 0
    for i in range(0, len(table0.rows) + 1, 3):
        # 日期
        date = table0.cell(i, 1).text
        # 有的条目时间是空的,这里不做过多判别
        if '/' in date:
            date = datetime.datetime.strptime(date, '%d/%m').strftime('2020-%m-%d')
        else:
            date = '-'
        # 标题
        title = table0.cell(i + 1, 1).text.strip()
        # 文号
        dfn = tables[j].cell(i, 3).text.strip()
        print(n, date, tite, dfn)
    这样一张表的内容解析就完成了,注意这里用的是table[0]即第一张表,遍历所有的表加一个嵌套循环就可以,另外也可以捕获异常增加程序灵活性
    n = 0
    for j in range(len(tables)):
        for i in range(0, len(tables[j].rows)+1, 3):
            try:
                # 日期
                date = tables[j].cell(i, 1).text
                if '/' in date:
                    date = datetime.datetime.strptime(date, '%d/%m').strftime('2020-%m-%d')
                else:
                    date = '-'
                # 标题
                title = tables[j].cell(i + 1, 1).text.strip()
                # 文号
                dfn = tables[j].cell(i, 3).text.strip()
                n += 1
                print(n, date, title, dfn)
            except Exception as error:
                # 捕获异常,也可以用log写到日志里方便查看和管理
                print(error)
                continue
    信息解析和获取完成就可以导出了,用到的包是openpyxl
    from openpyxl import Workbook

    # 实例化
    wb = Workbook()
    # 获取当前sheet
    sheet = wb.active
    # 设立表头
    header = ['序号', '收文时间', '办文编号', '文件标题', '文号', '备注']
    sheet.append(header)
    在最内层解析循环的末尾加上如下代码即可
    row = [n, date, ' ', title, dfn, ' ']
    sheet.append(row)

    线程的最后记得保存

    wb.save(r'C:\Users\20200420.xlsx')
    运行时间在10分钟左右,大概离开了一会程序就执行结束了

    f2348f5201ab27e7e2167f26ac47640c.png

    640

    最后附上完整代码,代码很简单,理清思路最重要

    from docx import Document
    import datetime
    from openpyxl import Workbook

    wb = Workbook()
    sheet = wb.active
    header = ['序号', '收文时间', '办文编号', '文件标题', '文号', '备注']
    sheet.append(header)


    path = r'C:\Users\word.docx'
    document = Document(path)
    tables = document.tables

    n = 0
    for j in range(len(tables)):
        for i in range(0, len(tables[j].rows)+1, 3):
            try:
                # 日期
                date = tables[j].cell(i, 1).text
                if '/' in date:
                    date = datetime.datetime.strptime(date, '%d/%m').strftime('2020-%m-%d')
                else:
                    date = '-'
                # 标题
                title = tables[j].cell(i + 1, 1).text.strip()
                # 文号
                dfn = tables[j].cell(i, 3).text.strip()
                n += 1
                print(n, date, title, dfn)
                row = [n, date, ' ', title, dfn, ' ']
                sheet.append(row)
            except Exception as error:
                # 捕获异常,也可以用log写到日志里方便查看和管理
                print(error)
                continue

    wb.save(r'C:\Users\20200420.xlsx')

    2b4e1c6b3b430b1e195c511af52d287b.png

    【往期精彩】

    ef091f680b8f385973e2e8c892eb5eab.png

    免费开放,从 Python入门到Tensorflow基础与实践

    f929b94a04001bb91e056bf99007ead7.png

    【天池大赛】3D人工智能挑战赛

    转发等于理解,收藏等于学会

    展开全文
  •  大量来自微软内部技巧 内容简介  t-sql一直以来都是 sql server编程基础。和传统 t-sql书籍不同,本书以独特 “技巧 ”形式来介绍知识点,涵盖了数据处理(增删改、视图、索引、存储过程、触发器等)、...
  • 第1章 声明和初始化 基本类型 1.1 我该如何决定使用哪种整数类型? 1.2 为什么不精确定义标准类型的大小? 1.3 因为C语言没有精确定义类型...7.6 我使用fgets将文件的所有行读入一个数组,为什么读入的每一行都是...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    1.28 文件第一个声明就报出奇怪语法错误,可我看没什么问题。这是为什么? 15 1.29 为什么我编译器不允许我定义大数组,如double array[256][256]? 15 命名空间 15 1.30 如何判断哪些标识符可以使用,...
  • 1.28 文件第一个声明就报出奇怪语法错误,可我看没什么问题。这是为什么? 15 1.29 为什么我编译器不允许我定义大数组,如double array[256][256]? 15 命名空间 15 1.30 如何判断哪些标识符可以使用,...
  • GIT

    2019-04-29 19:10:40
    思考:我们一般更新某个文档时,想保留旧的...缺点是这个文件的版本会越来越多,会浪费掉大量磁盘空间。但是我们可以定期去删除不需要的旧文件。a.txt--->a-2019-04-20.txt-->a-2019-04-21.txt-->....--&...

    思考:我们一般更新某个文档时,想保留旧的文件,一般人该怎么做?
    答:先将旧文件复制一份成一个新名称的文件,新文件名中附上当天的日期、时间。这样做的优点是我们可以随时找到某天修改的文件。缺点是这个文件的版本会越来越多,会浪费掉大量磁盘空间。但是我们可以定期去删除不需要的旧文件。
    a.txt--->a-2019-04-20.txt-->a-2019-04-21.txt-->....-->a-2019-04-26.txt-->....

    版本控制系统的管理模式:
    在不改变原始文件名的情况下,在版本控制系统中记录用户在指定的时间对文件所做的修改(版本号),用户在某个时刻想找回旧的文件,只需要取出那个时间的版本编号即可。常见的版本控制系统软件有SVN、Git。

    git软件简介:
    git软件是linux内核的开发者Linus torvalds在?年?月?日开始花费了大约一个星期的时间开发的。git软件原本是为了用来管理linux内核源代码的版本。

    git的工作流程:
    初始化要管理的目录---〉在目录中添加文件---〉将文件添加到暂存区(为了追踪文件的修改)---〉commit提交版本库中---〉同步变更的数据到git服务器上。

    练习:安装git软件,在/git-test目录中体验git管理控制系统的基本应用。
    rpm -q git && echo 'git soft exists' || yum install -y git
    mkdir -pv /git-test
    #在/git-test目录中生成git版本控制的初始数据库文件。
    git init /git-test
    cd /git-test
    ls -aR
    #在目录中添加文件,并查状态
    git status
    date > dt.txt
    ip a > ip.txt
    git status
    #将.txt文件添加到git的暂存区中
    git add
    .txt
    git status
    #将暂存区中的文件提交到版本库中取个名称(备注信息)记录下来。这个名称用于后期取出这个版本时。并查看git的当前日志
    git commit -m 'txt commit 1'
    git log

    ---
    附加练习:在/git-test目录中再执行如下操作,生成2个新文件,并提交到版本库中。
    cd /git-test
    git status
    lsblk > lk.txt
    df -hT > df.txt
    git status
    git add *.txt
    git commit -m 'txt commit 2'
    git status
    git log
    git reflog

    ---
    练习:取出/git-test目录中的第1个版本的文件,查看文件名列表。再取出第2个版本的文件,查看文件名列表。
    cd /git-test
    #列出文件名,现在是4个.txt的文件
    ls
    #查git当前的日志,并取出指定ID的版本
    git log
    git checkout 082a11
    #列出文件名,现在是2个.txt的文件
    ls
    #查看当前版本及以前的日志文件。发现没有第2个版本的日志信息。
    git log
    #查看所有版本的日志,并取出指定ID的版本
    git reflog
    git checkout ac93061

    ---
    搭建局域网中的git网络仓库:
    说明:git网络仓库搭建成功后,可以通过https、ssh、git协议来让git的客户机用git clone命令从git服务器上同步数据。如果采用ssh协议,就可以实现用密钥来免密码访问git服务器。

    部署思路:
    1.用useradd创建一个git账号,并设置登录密码
    2.初始一个git的裸库
    3.在客户机上用git clone同步git服务器上指定的裸库的数据
    4.在同步后的数据目录中创建文件,并添加到git暂存区,且提交到git版本库中。
    5.将修改后的数据同步上传到git服务器上。
    6.在另一台主机上用git clone同步数据,查看同步后的数据文件。

    说明:--bare是指创建裸库,是搭建git网络仓库的必用选项
    git init --bare 裸库名.git

    客户端同步裸库数据时:git clone 用户名@IP:/路径/ 裸库名.git

    同步git网络仓库中的数据:
    git clone git@192.168.11.11:/srv/sample.git
    ls
    cd sample
    ls -a
    git status
    date > dt.txt
    ip a > ip.txt
    git add *.txt
    git commit -m 'txt commit 1'
    git config --global push.default simple
    git push origin

    #再次同步更新后的数据
    cd /opt
    git clone git@192.168.11.11:/srv/sample.git
    cd sample
    ls 发现新的版本库中有2个.txt的文件

    ------------
    练习:用git来管理eth0网卡的配置文件
    cd /etc/sysconfig/network-scripts
    git init
    git status
    git add *
    git commit -m 'all files bak v1'
    git reflog
    echo 'IPADDR1=172.16.11.11' >> ifcfg-eth0
    echo 'PREFIX1=24' >> ifcfg-eth0
    cat ifcfg-eth0
    git status
    git commit -a -m 'ifcfg-eth0 modifye v1'
    git status

    #测试版本的回滚(取出)
    cat ifcfg-eth0
    git reflog
    #取出'all files bak v1'这个版本
    git checkout ad1b1f9
    cat ifcfg-eth0
    #取出'ifcfg-eth0 modifye v1'这个版本
    git checkout b13f618
    cat ifcfg-eth0

    ----------
    码云git hub平台的应用br/>练习:在码云平台上用qq号登录。
    码云平台的官网:https://gitee.com/
    金老师账号:12700696@qq.com
    金老师的码云网址:
    https://gitee.com/rshare

    将192.168.11.12虚拟机的公钥复制到码云平台的密钥管理界面中:
    查公钥:cat ~/.ssh/id_rsa.pub 然后复制看到的内容
    粘贴公钥:

    在192.168.11.12主机上执行如下操作
    cd /opt
    ls
    git clone git@gitee.com:rshare/linux.git
    ls
    cd linux
    date > dt.txt
    ip a > ip.txt
    git add *
    git commit -m 'txt files v1'
    git push origin

    刷新码云平台的网页,发现上传了dt.txt和ip.txt文件到linux仓库中了。


    git分支实验:
    cd /opt/linux
    git checkout master
    git checkout -b test1
    df -hT > df.txt
    git add df.txt
    git commit -m 'df.txt upload.'
    git push origin test1
    刷新码云平台的网页,发现test1分支中有df.txt文件到linux仓库中了。

    cd /opt/linux
    git checkout master
    git checkout -b test2
    lsblk -hT > lk.txt
    git add lk.txt
    git commit -m 'lk.txt upload.'
    git push origin test2
    刷新码云平台的网页,发现test2分支中有lk.txt文件到linux仓库中了。

    git checkout master
    git merge test1
    git merge test2
    git push origin master
    刷新码云平台的网页,发现master分支中有df.txt和lk.txt文件到linux仓库中了。

    -------------
    git分支实验:
    准备工作:在码云平台上创建一个新的仓库名称qf,然后将这个仓库同步到node12主机的/opt目录中。
    cd /opt
    git clone git@gitee.com:rshare/qf.git
    cd qf
    git branch -a
    git checkout -b test1
    git branch -a
    df > df.txt
    git status
    git add df.txt
    git commit -m 'df.txt v1.'
    git push origin test1
    刷新码云平台的网页,发现test1分支中有df.txt文件到linux仓库中了。

    git checkout master
    git checkout -b test2
    git branch -a
    lsblk > lk.txt
    git status
    git add lk.txt
    git commit -m 'lk.txt v1.'
    git push origin test2
    刷新码云平台的网页,发现test2分支中有lk.txt文件到linux仓库中了。

    git checkout master
    git merge test1
    git merge test2
    git push origin
    刷新码云平台的网页,发现master分支中有df.txt和lk.txt文件到linux仓库中了。

    转载于:https://blog.51cto.com/14311331/2386844

    展开全文
  • 在ASP.Net课程一开始,不是直接教学员怎么拖ASP.Net控件进行快速开发,而是通过ashx模式开发原始动态网站,让学员明白“请求—处理—响应模型”、“Http协议、Http无状态”、“c#代码渲染生成浏览器端...
  • 你必须知道495个C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    5.4 NULL 是什么, 它是怎么定义? . . . . . . . . . . . . . . . . . . 23 5.5 在使用非全零作为空指针内部表达机器上, NULL 是如何定义 ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...
  • 对网站名称标题的修改更适合于各种场景 学生端的登陆与注册 学生端可以直接填写假条并指定教师来审批 学生可以查询自己的假条信息 其他细节的完善 当然还有待完善的地方 继续丰富首页图表来展示更多信息 支持...
  • 3.6.1 利用vi创建和修改文件 46 3.6.2 用head和tail命令移动 47 3.7 文本提取和排序 48 3.7.1 使用grep匹配模式 48 3.7.2 剪切、粘贴和联结文本 49 3.8 shell脚本 50 3.8.1 shell程序介绍 51 3.8.2...
  • Thomas Kyte这本书正好弥补了这一点,他使用大量实际例子来解释所阐述概念,由浅入深地传授实战技术。如果你喜欢Oracle,需要更多地了解Oracle,这本书绝对值得一读。 本书第1章强调不要把数据库当成一个黑盒...
  • 深入学习shell脚本艺术

    热门讨论 2011-02-22 04:01:01
    在一个文本文件的段间插入空行 9-11. 利用修改文件名,来转换图片格式 9-12. 模仿getopt命令 9-13. 提取字符串的一种可选的方法 9-14. 使用参数替换和error messages 9-15. 参数替换和"usage"messages 9-16. 变量...
  • 3.9 修改跟踪文件 102 3.10 闪回日志 103 3.10.1 闪回数据库 103 3.10.2 闪回恢复区 104 3.11 DMP文件(EXP/IMP文件) 104 3.12 数据泵文件 105 3.13 平面文件 108 3.14 小结 109 第4章 内存结构 110 4.1 ...
  • o 3.10 我编译器在结构中留下了空洞, 这导致空间浪费而且无法与外部数据文件进行 "二进制" 读写。能否关掉填充, 或者控制结构域对齐方式? o 3.11 为什么 sizeof 返回值大于结构期望值, 是不是尾部有填充? ...
  • 一.Linux的文件系统结构.....................................................................................................6 二. 文件类型................................................................
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    17.4 异步文件操作 .227 17.5 小 结 .234 第十八章 高 级 话 题 .235 18.1 注册表编程 .235 18.2 在 C #代码中调用 C++和 VB 编写组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    17.2 文件存储管理 .217 17.3 读 写 文 件 .222 17.4 异步文件操作 .227 17.5 小 结 .234 第十八章 高 级 话 题 .235 18.1 注册表编程 .235 18.2 在 C #代码中调用 C++和 VB 编写组件 .240 18.3 版 ...
  • 精通Oracle PL/SQL--详细书签版

    热门讨论 2012-08-21 13:06:28
    7.1.10 回顾警告文件的内容 297 7.1.11 小结 297 7.2 通知包 297 7.2.1 SEND_EMAIL过程 298 7.2.2 在数据库中保存警告消息 300 7.2.3 小结 301 7.3 主动监控包 301 7.3.1 备份 302 7.3.2 归档日志目录下的...
  • 这个软件可以说是轻松的实现你的想法,在首先经过词典的对应后,你可以方便的修改单词对应关系,可以保存成特定的文件,下次还可以再打开,继续上次没有完成的工作.特别的是,你可以手工软件你自己认为最正确的解释,来...
  • Visual Studio程序员箴言--详细书签版

    热门讨论 2012-10-16 20:37:39
    技巧4.4 直接打开包含活动文件的Windows资源管理器 74 技巧4.5 只关闭选定的文件 74 技巧4.6 在什么情况下,文件选项卡频道的下拉按钮会改变图标 75 4.1.2 IDE导航器 76 技巧4.7 使用Ctrl+Tab键打开IDE...
  • 本书以其翔实知识面覆盖、大量实用示例和作者自身丰富编程经验,阐述了从C语言编程基础、C++面向对象语法、MFC类库、控件及高级应用、进程和线程到异常处理等各个方面诀窍,是一本系统而全面编程经典图书...
  • 本书以其翔实知识面覆盖、大量实用示例和作者自身丰富编程经验,阐述了从C语言编程基础、C++面向对象语法、MFC类库、控件及高级应用、进程和线程到异常处理等各个方面诀窍,是一本系统而全面编程经典图书...
  • 本书以其翔实知识面覆盖、大量实用示例和作者自身丰富编程经验,阐述了从C语言编程基础、C++面向对象语法、MFC类库、控件及高级应用、进程和线程到异常处理等各个方面诀窍,是一本系统而全面编程经典图书...
  • 本书以其翔实知识面覆盖、大量实用示例和作者自身丰富编程经验,阐述了从C语言编程基础、C++面向对象语法、MFC类库、控件及高级应用、进程和线程到异常处理等各个方面诀窍,是一本系统而全面编程经典图书...

空空如也

空空如也

1 2 3
收藏数 43
精华内容 17
关键字:

怎么大量修改文件的修改日期