unpack(解压)

这个是用pyautogui实现的一个自动解压,因为压缩包里没有文件夹,需要新建一个和压缩包名字一样的文件夹,

逻辑

用7zip的图像识别,找到左上方的第一个图标,复制压缩包的名字,在空白处新建文件夹,名字就用刚才复制的,刚好文件夹就在压缩包的下面,继续找到7zip的图标,拖到新建的文件夹里,进入文件夹,解压,删除压缩包,返回上一层,重复操作

遇到的问题

‘新建文件夹’这个名字排序一开始是在前面的,后来就会排到后面,需要点一下右边的滑动条那个小箭头,最好是点一下,一开始点的次数多,到最后面就没办法自动化了,位置变了。

    for j in range(1):click(1357,697)

一些知识点

dragTo() 和 drag()

dragTO(point,duration,button)  # 拖拽到指定位置,这里就是从当前鼠标在的位置拖拽,有三个参数,duration是拖拽时间
drag() # 相对当前鼠标位置,拖拽指定像素,

locateCenterOnScreen()

后面想起来可以直接定位图片的中心位置坐标,我当时用了个笨办法,先用box()返回图片的左上角坐标和长宽,然后算出来的中心点坐标

注意

文件夹里显示的方式必须是列表,刚好可以压缩包在新建文件夹的下面,拖拽的时候位置相对7zip.png的位置是固定的,这里的图像识别最好使用一个好识别的,像7zip只有黑白两种颜色,就很好识别


deleteheader(删除Word页眉页脚)

用os,win32com实现的批量给Word文档去页眉页脚的一个小工具

逻辑

用os.walk()遍历所有子文件夹,然后把子文件夹里的文件名取出来放在一个列表里,遍历列表里的文件名,然后截取文件名的拓展名,如果是doc,docx就调用removeHeaderFooter()函数,如果不是跳过。removeHeaderFooter()主要是用win32com实现

遇到的问题

win32com

有一些Word文件限制编辑,执行到会终止程序,暂时没什么好的解决办法,只能手动把文件弄出来再执行一次,但是这样就有很多重复执行了的,暂时想到的办法就是把大量的文件分成几个组分开去除页眉页脚。

主要还是win32com没搞明白,之后看一下,有时间优化一下,可以改成如果遇到限制编辑的文件就把这个文件放到一个专门的文件夹。

os.walk(path)

这里用的事遍历子文件夹实现的,这样就没办法给最上面的那个文件夹里的Word文档去除页眉页脚,虽然我用不上,但是如果需要的话可以用遍历文件的方式

path = 'C:\\Users\\马赛克\\Documents\\Python\\workspace\\PRA\\test'
for root,subFolders,fileNames in os.walk(path):for fileName in fileNames:if os.path.isfile(os.path.join(root, fileName)) and fileName.split('.')[-1].lower() in ['doc', 'docx']:print("去除"+os.path.join(root,fileName)+"的页眉页脚")

一些知识点

os.walk(path)

os.walk()循环时返回三个值

  1. 当前文件夹路径的字符串

  2. 当前文件夹子文件夹名的字符串列表

  3. 当前文件夹中文件名的字符串列表

注意: 当前文件夹是指for循环当前迭代的文件夹,程序的当前工作目录不会因为os.walk()而改变

os.walk() 方法可以创建一个生成器,用以生成所要查找的目录及其子目录下的所有文件。

os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。

生成器可以理解为迭代器,迭代器是一个有记忆的东西,遍历过得东西他不会再。。。,就是说

os.listdir(path)

返回path目录下的所有文件名组成的列表

注意


dedup(删除原来的文件)

上面处理完的文件,经过Word转PDF,PDF去除密码,删除PDF页眉页脚后,新的PDF文件都是以Do_、Removed_作为文件名前缀,这里需要把原来的Word和PDF删除到。

逻辑

用os.walk()遍历所有文件,取出文件名切片判断有没有对应的前缀,如果没有就删除,如果有跳过

一些知识点

str.split()

切片后返回的是一个列表,如果没有切片的分隔符就直接返回整个str,这样就不能取列表的第[1]个(会越界),可以用最后一个[-1],python这个有倒序的真好用。

这里其实不用判断isfile(),因为前面循环的就是fileNames,这里直接复制的,当时没注意,现在发现了。

os.unlink()

os.unlink(path): 删除path处的文件。

os.rmdir(path): 删除path处的文件夹。该文件夹必须为空,其中没有任何文件和文件夹。

shutil.rmtree(path):删除 path 处的文件夹,它包含的所有文件和文件夹都会被删除。

注意:使用时,需要非常小心,避免删错文件,一般在第一次运行时,注释掉这些程序,并加上print()函数来帮助查看是否是想要删除的文件。

send2trash模块安全删除

shutil.rmtree(path)会不可恢复的删除文件和文件夹,用起来会有危险。因此使用第三方的send2trash模块,可以将文件或文件夹发送到计算机的垃圾箱或回收站,而不是永久删除。因程序缺陷而用send2trash 删除的某些你不想删除的东西,稍后可以从垃圾箱恢复。

注意:使用时,需要非常小心,避免删错文件,一般在第一次运行时,注释掉这些程序,并加上print()函数来帮助查看是否是想要删除的文件。

pip install send2trash       #安装send2trash模块import send2trash
send2trash.send2trash('bacon.txt')

注意

这里用到了删除文件的os.unlink(),一定要注意先看一下有没有删对,或者是先用测试数据测试,不要直接在没有备份的数据上试,删错了找不回来


rename(重命名,删前缀)

一个批量重命名的小工具,用os.walk()遍历所有文件,把文件名切片,然后加上要删除或者增加的前缀

一些知识点

os.rename(path1,path2)

有两个参数,第一个参数是重命名的文件的路径,重命名后新的文件名和路径

注意

第一次重命名成功后如果再次执行,已经没有原来的分隔符,就会在原文件名前面加新东西,多次执行后文件名会变得很长,记得再次执行时复原原来的文件名


pack(文件打包)

逻辑

先用os.walk()遍历所有子文件夹,创建跟子文件夹名字相同的zip压缩包,然后遍历子文件夹里的文件,把所有文件添加到压缩包中

遇到的问题

ZipFile.write(_filename_, _arcname=None_, _compress_type=None_, _compresslevel=None_)

第一个参数是将要添加到压缩包中的文件的名字,第二个参数是添加到压缩包后的名字,默认是把文件的路径也连带进去的,也就是说,如果不写第二个参数,最后压缩包中并不是打开就是文件,而是这个文件原来的上级文件,一层一层到这个文件

一些知识点

zipfile库

zipfile.ZipFile(path+filename+'zip',)第二个参数可以是w新添加进去的文件会覆盖原来的文件,如果是a就不会。

.close()如果不关闭

os.walk()

os.walk()遍历的文件一直是当前目录中的文件,也就是说子文件夹中的文件是添加不到压缩包里的,如果想用直接遍历当前文件夹中的文件添加到压缩包,压缩包命名的时候就需要变成root+'.zip',下面的代码是原来的代码,下面的下面是新的代码,原来的代码是不能把根目录里的文件压缩的,现在可以了

path = ''
for root, subFolders,fileNames in os.walk(path):for subFolder in subFolders:newZip = zipfile.ZipFile(root+'\\'+subFolder+'.zip', 'a')print(os.path.join(root, subFolder))for root1 ,subFolders1 ,fileNames1 in os.walk(os.path.join(root,subFolder,)):for fileName1 in fileNames1:newZip.close()
path2 = 'C:\\Users\\马赛克\\Documents\\Python\\workspace\\PRA\\test'
for root2 ,subFolders2 ,fileNames2 in os.walk(path2):newZip2 = zipfile.ZipFile(root2+'.zip','a')for fileName2 in fileNames2:newZip2.write(os.path.join(root2,fileName2),fileName2)newZip2.close()

python自动化的实践笔记相关推荐

  1. 基于 Docker 和 GitLab 的前端自动化部署实践笔记

    基于 Docker 和 GitLab 的前端自动化部署 实践笔记 随着接触的项目越来越多,在部署测试流程上重复耗时工作也越来越多,所以对前端工作的CI/CD实现愈发迫在眉睫. 前端开发由于三大框架的崛 ...

  2. Python计算基尼系数实践笔记(案例+代码+视频+列表推导式)

    前些天听了南京大学周耿老师关于"基尼系数计算"的直播课,需要时间好好消化,便有了整理此篇文章的想法. 1 基尼系数 1.1 简介 1912年意大利经济学家基尼,设计了一个测度社会贫 ...

  3. 学习python自动化运维笔记文件比较

    1.文件比较      #!/usr/bin/env python import  filecmp x = filecmp.dircmp("/home/1","/home ...

  4. 《Python自动化》学习笔记:shutil模块使用介绍

    Python 对文件的组织操作 1.shutil模块 1.1 文件(夹)的复制操作 1.2 文件(夹)的移动和重命名 1.3 文件(夹)的删除操作 1.4 遍历目录树 1.shutil模块 该模块基本 ...

  5. Python自动化开发课堂笔记【Day06】 - Python基础(模块)

    正则模块 常用正则表达式列表(盗图一张:-P) 1 import re 2 3 print(re.findall('\w','abc123d_ef * | - =')) 4 print(re.find ...

  6. python自动化运维笔记

    命令行工具 1.click模块 click模块和argparse功能相同,但更为易用,使用click分为两个步骤,1)使用@click.command()装饰一个函数,使之成为命令行接口:2)使用@c ...

  7. Python自动化开发课堂笔记【Day13】 - 前端补充(HTML CSS)

    伪类 1. anchor伪类:专用于控制链接的显示效果 a:link(没有接触过的链接),用于定义了链接的常规状态.a:hover(鼠标放在链接上的状态),用于产生视觉效果.a:visited(访问过 ...

  8. 《Python自动化》学习笔记:百度云智能进行文字识别(代码干货)

    # encoding:utf-8 # 利用百度云智能的资源进行文字识别 import requests import base64 from tkinter import filedialog,Tk ...

  9. 《Python自动化》学习笔记:百度云智能实现黑白图片上色,人物动漫化(代码干货)

    基本要求 要注册百度的账号,并且创建应用,方法如下: 百度智能云新手入门教程:https://cloud.baidu.com/doc/OCR/s/dk3iqnq51 目的是为了获得API_Key和Se ...

最新文章

  1. Windows配置ArUco
  2. 大数据互联网架构阶段 QuartZ定时任务+RabbitMQ消息队列
  3. lua-nginx-module directives 中文版
  4. jvm系列(八):jvm知识点总览
  5. 子元素增加margin-top会增加给父元素的问题
  6. python中遇到循环import即circular import的问题原理剖析及解决方案
  7. 11.18 如何将界面注册到系统?
  8. element-ui 下拉框样式修改
  9. C/C++ abs 函数 - C语言零基础入门教程
  10. fullcalendar 课程表 js 插件 日程安排操作 js
  11. php 文字合成图片,PHP图片和文字合成
  12. [附源码]计算机毕业设计springboot微信点餐系统
  13. 搭建网站的主要目的、基本步骤和技巧
  14. 怎样使用计算机的桌面助手,360桌面助手怎么用
  15. 如何搭建适合自己团队的构建部署平台
  16. 安迪·鲁宾支持的猫头鹰实验室刚推出了一款机器人视频会议摄像机
  17. 微分,梯度及梯度下降法
  18. 计算机水平一般良好怎么填,计算机水平一般怎么填
  19. 【K8s超级补丁】KLTS攻略:KLTS现有成果、如何使用、RoadMap规划,如何参与到KLTS项目贡献中来
  20. 计算机组成原理-中央处理器(CPU基本结构及功能、指令执行、数据通路、硬布线控制器、微程序控制器、指令流水线)

热门文章

  1. 在家怎么能赚钱?三分钟教会你4个赚钱方法!
  2. mysql数据库三层架构_数据库的三层架构
  3. 英语早教启蒙的三大误区,你踩雷了吗
  4. MDK5报错“No Browse information available”
  5. 进军产业互联网背后:5G时代的讯众股份如何走出新路?
  6. sybase 设置默认值_SYBASE性能优化
  7. jdbc 链接 sybase
  8. mysql数据导入乱码怎么办_MYSQL导入数据时出现乱码怎么办
  9. 改变maven打包路径_Maven打包技巧
  10. 解决js函数replace禁止输入框输入非法字符,光标回到文字最后问题(兼容ie、谷歌)