用 Python 自动化办公能做到哪些有趣或有用的事情?

标签: python  

有一个女同学是税务公务员,每个月需要统计大量的表,枯燥乏味。每次想请她吃饭都是说加班统计表。于是我就用Python一键实现了VlookUp功能

将多个表比如data.xls,海关.xls,机动车.xls,认证.xls 等等的数据比对放入总表中,然后将总表中的某些列以一定计算规则计算到一个总数列,最后对总数列中的数据再进行处理。 以gui的形式打包,只需要选择放入文件的文件夹,点击一键转换即可。

界面上我还特意加了一个输入框作为彩蛋,只要输入某个数字就会有特定的惊喜! 两年过去了,她孩子都有了,我现在只希望那个彩蛋永远别触发了...

上面的代码就 不分享了,因为不具备适用性。分享几个写过的其他自动化例子

windows快速重新

import os

os.system('shutdown -R -T 0')

windows快速关机

import os

os.system('shutdown -s -t 0')

批量给某个文件夹所有文件加前缀

import os

# 文件夹路径:
folder_path = "/home/chen/Documents/ex2tron-wang/LeetCode-Python3/"
# 要在开头添加的文本:
append_str = "# ex2tron's blog:\n# http://codec.wang"

for file in os.listdir(folder_path):
    with open(os.path.join(folder_path, file), 'r+') as f:
        content = f.read()
        f.seek(0, 0)
        f.write(append_str+"\n\n"+content)

print('已修改所有的文件')

批量给文件夹下的所有文本类的文件开头加一句话

import os

# 文件夹路径:
folder_path = "/home/chen/Documents/ex2tron-wang/LeetCode-Python3/"
# 要在开头添加的文本:
append_str = "# ex2tron's blog:\n# http://codec.wang"
# 要修改特定文件的后缀名:
postfix = '.py'

for file in os.listdir(folder_path):
    if os.path.splitext(file)[1] == postfix:
        with open(os.path.join(folder_path, file), 'r+') as f:
            content = f.read()
            f.seek(0, 0)
            f.write(append_str+"\n\n"+content)

print('已修改所有的%s文件' % postfix)

提取文本中的电话和邮箱

import re
import pyperclip

# 中国手机号码正则匹配
phone_regex = re.compile(r'((\d{3})(\s|-|\.)?(\d{4})(\s|-|\.)?(\d{4}))')
# 邮箱地址正则匹配
email_regex = re.compile(
    r'([a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+(\.[a-zA-Z]{2,4}))')

text = pyperclip.paste()
print('匹配到的所有电话号码为:')
for group in phone_regex.findall(text):
    print(group[0])

print('匹配到的所有邮箱地址为:')
for group in email_regex.findall(text):
    print(group[0])

# 测试文本
# 我叫ex2tron,电话号码是188-8888-6666,邮箱是:[email protected],另一个邮箱是:[email protected]

批量重命名文件

import os
import shutil

path1 = 'dir1/'
path2 = 'dir2/'

if not os.path.exists(path2):
    os.mkdir(path2)

for file in os.listdir(path1):
    old_dir = os.path.join(path1, file)
    filename, filetype = os.path.splitext(file)

    new_dir = os.path.join(path2, str(int(filename)+199)+filetype)
    # os.rename(old_dir, new_dir)
    # shutil.move(old_dir, new_dir)
    # 上面两种方式都会移动删除掉源文件
    shutil.copy(old_dir, new_dir)

识别剪切板中的二维码内容

from PIL import ImageGrab
from pyzbar.pyzbar import decode
import pyperclip

# 1. 从剪贴板中获取图片
img = ImageGrab.grabclipboard()
if img:
    try:
        # 2. 解码
        qrcode = str(decode(img)[0].data)
        # 3. 复制到剪贴板
        # pyperclip.copy(str(qrcode))
        print(qrcode)
        # 4. 显示图片
        # img.show()
    except:
        print('No QRCode Found.')
else:
    print('No Image Here.')

获取windows用户文件的位置

import winreg


def get_user_path():
    # 用户文件夹的地址可以在下面这个注册表中查找
    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
                         "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders")
    print('桌面', winreg.QueryValueEx(key, 'Desktop')[0])
    print('文档', winreg.QueryValueEx(key, 'Personal')[0])
    print('音乐', winreg.QueryValueEx(key, 'My Music')[0])
    print('图片', winreg.QueryValueEx(key, 'My Pictures')[0])
    print('视频', winreg.QueryValueEx(key, 'My Video')[0])
    print('下载', winreg.QueryValueEx(
        key, '{374DE290-123F-4565-9164-39C4925E467B}')[0])


get_user_path()

还有一些针对特定场景写过一些脚本这里就不分享啦..

对了,再给大家分享一些关于自动化的视频资料:

链接:https://pan.baidu.com/s/1eKivANdIix2ld5JcqFBpbw

提取码:czeu

版权声明:本文为qq_43209279原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43209279/article/details/106358190

智能推荐

基础知识(变量类型和计算)

一、值类型 常见的有:number、string、Boolean、undefined、Symbol 二、引用类型 常用的有:object、Array、null(指针指向为空)、function 两者的区别: 值类型暂用空间小,所以存放在栈中,赋值时互不干扰,所以b还是100 引用类型暂用空间大,所以存放在堆中,赋值的时候b是引用了和a一样的内存地址,所以a改变了b也跟着改变,b和a相等 如图: 值...

Codeforces 1342 C. Yet Another Counting Problem(找规律)

题意: [l,r][l,r][l,r] 范围内多少个数满足 (x%b)%a!=(x%a)%b(x \% b) \% a != (x \% a) \% b(x%b)%a!=(x%a)%b。 一般这种题没什么思路就打表找一下规律。 7 8 9 10 11 12 13 14 15 16 17 18 19 20 28 29 30 31 32 33 34 35 36 37 38 39 40 41 49 50...

[笔记]飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习-21日学习打卡(Day 3)

[笔记]飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习-21日学习打卡(Day 3) (Credit: https://gitee.com/paddlepaddle/Paddle/raw/develop/doc/imgs/logo.png) MNIST数据集 MNIST数据集可以认为是学习机器学习的“hello world”。最早出现在1998年LeC...

哈希数据结构和代码实现

主要结构体: 实现插入、删除、查找、扩容、冲突解决等接口,用于理解哈希这种数据结构 完整代码参见github: https://github.com/jinxiang1224/cpp/tree/master/DataStruct_Algorithm/hash...

猜你喜欢

解决Ubuntu中解压zip文件(提取到此处)中文乱码问题

在Ubuntu系统下,解压zip文件时,使用右键--提取到此处,得到的文件内部文件名中文出现乱码。 导致此问题出现的原因一般为未下载相应的字体。 解决方案: 在终端中使用unar命令。 需要注意的是系统需要包含unar命令,如果没有,采用如下的方式解决: 实例效果展示: 直接提取到此处: 使用 unar filename.zip得到的文件...

centos7安装mysql8.0.20单机版详细教程

mysql8.0之后与5.7存在着很大的差异,这些差异不仅仅表现在功能和性能上,还表现在基础操作和设置上。这给一些熟悉mysql5.7的小伙伴带来了很多困扰,下面我们就来详细介绍下8.0的安装和配置过程。 mysql在linux上的多种安装方式: 1.yum安装 由于centos默认的yum源中没有mysql,所以我们要使用yum安装mysql就必须自己指定mysql的yum源。在官网下载mysq...

Python自学记录——调用函数和定义函数

对于函数,我的理解是 抽象的方法。你不需要它是内部结构是什么样子的,只要遵从它给你的规则来使用,就能得到想要的效果。 调用函数 在 Python 中,有很多内置的函数供我们调用,常用的函数如下: help(obj) 帮助,解释传入的obj type(obj) 查看传入obj的类型 callable(obj) 查看obj是否可以像函数被调用 isinstance(obj,cls) 查看obj的数据类...

透视遮罩Shader

Unity的透视遮罩Shader 介绍 shader 效果 资源下载 介绍 一个透视遮罩的Shader,及其材质球,会按照模型的UV方向产生透视效果。 shader 效果 里面有个UV从里面向外的球形模型,添加入材质球之后,在球内部向外看时,则会透视球外部的所有3D物体,直接看到天空盒。 一般状态下的场景: 透视遮罩下的场景: 资源下载 资源链接:https://download.csdn.net...

wingIDE设置python虚拟环境并运行

project=>project properties 用代码验证当前python环境: 按F5运行得到 /home/appleyuchi/.virtualenvs/python2.7 hello world /home/appleyuchi/.virtualenvs/python2.7/bin/python2.7 ########################33 说明所使用的pytho...