在当今的快节奏工作环境中,自动化不再是一种奢侈,而是提高效率和精确性的必需手段。Python
,以其易于学习和强大的功能而闻名,成为实现各种自动化任务的理想选择。无论是数据处理、报告生成,还是日常的文件管理,一个简单但有效的Python
脚本就能大幅减轻您的工作负担。在本文中,我们将探索如何使用Python
来创建多个自动化脚本,它不仅能够节省您的时间,还可以提高工作的准确率和效率。我们先来看第一个自动化脚本
自动化文件管理
整理目录中的文件
import os
from shutil import move
def sort\_files(directory\_path):
for filename in os.listdir(directory\_path):
if os.path.isfile(os.path.join(directory\_path, filename)):
# 获取文件扩展名
file\_extension = filename.split('.')\[-1\]
# 创建目标目录
destination\_directory = os.path.join(directory\_path, file\_extension)
if not os.path.exists(destination\_directory):
os.makedirs(destination\_directory)
# 移动文件
move(os.path.join(directory\_path, filename),
os.path.join(destination\_directory, filename))
# 调用函数,替换路径
sort\_files('your\_directory\_path')
这段代码包含一个名为sort_files
的函数,它接受一个目录路径作为参数。函数遍历指定目录中的所有文件,并检查每个文件是否是一个常规文件(非目录等)。对于每个文件,它提取出文件的扩展名,创建一个以该扩展名命名的新目录(如果该目录不存在的话),然后将文件移动到新创建的对应扩展名的目录中。
移除空白的文档
import os
def remove\_empty\_folders(directory\_path):
# 遍历目录树
for root, dirs, files in os.walk(directory\_path, topdown=False):
for folder in dirs:
folder\_path = os.path.join(root, folder)
# 如果目录为空,则删除
if not os.listdir(folder\_path):
os.rmdir(folder\_path)
# 替换下面的路径为自己想清理的目录的路径
remove\_empty\_folders('your\_directory\_path')
这段代码定义了一个名为remove_empty_folders
的函数,它接受一个目录路径作为参数。函数使用os.walk
遍历给定目录及其所有子目录。os.walk
函数以topdown=False
的方式执行,这意味着遍历将从目录树的最底层开始,确保在删除空目录之前已处理了所有子目录。
对于每个找到的目录,代码检查该目录是否为空(即不包含任何文件或子目录)。如果是空目录,它就使用os.rmdir
函数将其删除。
多个文件的重命名
import os
def rename\_files(directory\_path, old\_name, new\_name):
# 遍历目录中的所有文件
for filename in os.listdir(directory\_path):
# 检查文件名中是否包含旧名称
if old\_name in filename:
# 生成新的文件名
new\_filename = filename.replace(old\_name, new\_name)
# 重命名文件
os.rename(os.path.join(directory\_path, filename),
os.path.join(directory\_path, new\_filename))
# 替换下面的路径和名称
# 例如 directory\_path: 您要重命名文件的目录路径
rename\_files('your\_directory\_path', 'old\_name', 'new\_name')
这段代码定义了一个名为rename_files
的函数,它接受三个参数:要处理的目录的路径、需要被替换的旧名称、以及新名称。该函数遍历指定目录中的所有文件,检查每个文件名是否包含旧名称。如果包含,它会用str.replace
方法生成一个新的文件名,然后使用os.rename
方法将文件重命名。
Excel办公自动化软件
读取和写入
import pandas as pd
def read\_excel(file\_path):
# 读取Excel文件
df = pd.read\_excel(file\_path)
return df
def write\_to\_excel(data, file\_path):
# 将数据写入Excel文件
df = pd.DataFrame(data)
df.to\_excel(file\_path, index=False)
# 读取Excel文件
dataframe = read\_excel('path\_to\_your\_input\_file.xlsx')
# 将修改后的数据写入新的Excel文件
write\_to\_excel(dataframe, 'path\_to\_your\_output\_file.xlsx')
我们主要是调用pandas
模块中的read_excel
函数接受一个文件路径作为参数并且读取Excel
文件,并将其作为DataFrame
返回。write_to_excel
函数则接受一个数据集和一个输出文件路径,将数据集转换为DataFrame
,然后使用to_excel
方法写入Excel
文件。在to_excel
方法中,index=False
参数表示在输出的Excel
文件中不包括行索引。
合并多个工作表
import pandas as pd
def merge\_sheets(file\_path, output\_file\_path):
# 打开Excel文件
xls = pd.ExcelFile(file\_path)
# 创建一个空的DataFrame
df = pd.DataFrame()
# 遍历所有工作表
for sheet\_name in xls.sheet\_names:
# 读取每个工作表
sheet\_df = pd.read\_excel(xls, sheet\_name)
# 将每个工作表的数据追加到df中
df = df.append(sheet\_df, ignore\_index=True)
# 将合并后的数据写入新的Excel文件
df.to\_excel(output\_file\_path, index=False)
# 替换为自己的文件路径
merge\_sheets('path\_to\_your\_excel\_file.xlsx', 'path\_to\_your\_output\_file.xlsx')
这段代码定义了一个名为merge_sheets
的函数,它接受原始Excel
文件的路径和输出文件的路径作为参数。函数首先使用pd.ExcelFile
读取Excel
文件,并创建一个空的DataFrame
。然后,它遍历该Excel
文件中的所有工作表,使用pd.read_excel
逐个读取它们,并通过append
方法将每个工作表的数据追加到之前创建的空DataFrame
中。这里使用了ignore_index=True
,意味着在合并数据时会重新生成索引。
最后,使用to_excel
方法将合并后的数据保存到一个新的Excel
文件中。在这个方法中,index=False
参数表示在输出文件中不包括行索引。
图片处理
图片的修剪
from PIL import Image
def resize\_image(input\_path, output\_path, width, height):
# 打开图片
image = Image.open(input\_path)
# 调整图片大小
resized\_image = image.resize((width, height), Image.ANTIALIAS)
# 保存调整后的图片
resized\_image.save(output\_path)
def crop\_image(input\_path, output\_path, left, top, right, bottom):
# 打开图片
image = Image.open(input\_path)
# 裁剪图片
cropped\_image = image.crop((left, top, right, bottom))
# 保存裁剪后的图片
cropped\_image.save(output\_path)
# 替换为自己的文件路径和参数
resize\_image('path\_to\_input\_image.jpg', 'path\_to\_resized\_image.jpg', 800, 600)
crop\_image('path\_to\_input\_image.jpg', 'path\_to\_cropped\_image.jpg', 100, 100, 400, 400)
在resize_image
函数中,它接受输入路径、输出路径、以及新图片的宽度和高度作为参数。该函数使用PIL
库打开图片,然后调用resize
方法将图片大小调整为指定的宽度和高度。
crop_image
函数接受输入路径、输出路径,以及裁剪区域的左、上、右、下四个坐标作为参数。该函数同样使用PIL
库打开图片,然后使用crop
方法根据提供的坐标裁剪图片。
添加水印
from PIL import Image, ImageDraw, ImageFont
def add\_watermark(input\_path, output\_path, watermark\_text):
# 打开图片
image = Image.open(input\_path)
# 准备绘制对象
draw = ImageDraw.Draw(image)
# 设置字体(这里使用Arial,大小为36)
font = ImageFont.truetype('arial.ttf', 36)
# 在图片上添加水印文字
draw.text((10, 10), watermark\_text, fill=(255, 255, 255, 128), font=font)
# 保存带有水印的图片
image.save(output\_path)
# 替换为自己的文件路径和水印文本
add\_watermark('path\_to\_input\_image.jpg', 'path\_to\_watermarked\_image.jpg', 'Your Watermark Text')
这段代码定义了一个名为add_watermark
的函数,它接受输入图片的路径、输出图片的路径和水印文本作为参数。该函数首先使用PIL
库打开图片,然后创建一个ImageDraw
对象以便在图片上绘制文本。接下来,设置字体(本例中使用Arial字体,字号为36),并使用draw.text
方法将水印文本绘制到图片上。最后,保存带有水印的图片到指定的输出路径。
创建缩略图
from PIL import Image
def create\_thumbnail(input\_path, output\_path, size=(128, 128)):
# 打开图片
image = Image.open(input\_path)
# 创建缩略图
image.thumbnail(size)
# 保存缩略图
image.save(output\_path)
# 替换为自己的文件路径
create\_thumbnail('path\_to\_input\_image.jpg', 'path\_to\_thumbnail\_image.jpg')
在这段代码中,create_thumbnail
函数接受三个参数:输入图片的路径、输出图片的路径,以及缩略图的尺寸(默认为128×128像素)。函数使用PIL
库打开原始图片,然后调用thumbnail
方法来创建缩略图。
系统任务
系统进程管理
import psutil
def get\_running\_processes():
# 获取当前运行的进程信息
return \[p.info for p in psutil.process\_iter(\['pid', 'name', 'username'\])\]
def kill\_process\_by\_name(process\_name):
# 遍历当前运行的进程
for p in psutil.process\_iter(\['pid', 'name', 'username'\]):
# 如果进程名匹配,则终止进程
if p.info\['name'\] == process\_name:
p.kill()
# 获取运行中的进程列表
running\_processes = get\_running\_processes()
# 杀死指定名称的进程(请谨慎使用)
# kill\_process\_by\_name('process\_name\_here')
在get_running_processes
函数中,使用psutil.process_iter
方法来迭代当前运行的所有进程,并获取每个进程的pid
(进程ID)、name
(进程名)和username
(运行该进程的用户)。这些信息被收集在一个列表中并返回。
kill_process_by_name
函数也使用psutil.process_iter
来遍历所有进程,但它检查每个进程的名称是否与给定的process_name
相匹配。如果找到匹配的进程,它使用kill
方法终止该进程。
PDF文件操作
多个PDF文件合并
import PyPDF2
def merge\_pdfs(input\_paths, output\_path):
# 创建PDF合并器对象
pdf\_merger = PyPDF2.PdfMerger()
# 遍历所有输入路径并添加到合并器
for path in input\_paths:
with open(path, 'rb') as f:
pdf\_merger.append(f)
# 将合并后的PDF写入输出文件
with open(output\_path, 'wb') as f:
pdf\_merger.write(f)
# 替换为自己的PDF文件路径
input\_pdf\_paths = \['pdf1.pdf', 'pdf2.pdf', 'pdf3.pdf'\]
output\_pdf\_path = 'merged.pdf'
merge\_pdfs(input\_pdf\_paths, output\_pdf\_path)
在这个脚本中,merge_pdfs
函数接受两个参数:一个包含要合并的PDF
文件路径的列表input_paths
和一个输出文件路径output_path
。函数首先创建了一个PyPDF2.PdfMerger
对象,然后逐个打开输入列表中的PDF
文件,并使用append
方法将它们添加到合并器中。最后,使用write
方法将合并后的PDF
输出到指定的文件路径。
PDF文件密码保护
import PyPDF2
def add\_password\_protection(input\_path, output\_path, password):
# 打开要加密的PDF文件
with open(input\_path, 'rb') as f:
pdf\_reader = PyPDF2.PdfFileReader(f)
pdf\_writer = PyPDF2.PdfFileWriter()
# 复制所有页面到写入器对象
for page\_num in range(pdf\_reader.numPages):
page = pdf\_reader.getPage(page\_num)
pdf\_writer.addPage(page)
# 为PDF文件设置密码
pdf\_writer.encrypt(password)
# 写入加密后的PDF到输出文件
with open(output\_path, 'wb') as output\_file:
pdf\_writer.write(output\_file)
# 请替换为自己的文件路径和密码
input\_pdf\_path = 'input.pdf'
output\_pdf\_path = 'protected.pdf'
password = 'your\_password'
add\_password\_protection(input\_pdf\_path, output\_pdf\_path, password)
在这段代码中,add_password_protection
函数接受输入文件路径input_path
、输出文件路径output_path
和密码password
作为参数。它首先打开输入的PDF
文件,使用PyPDF2.PdfFileReader
读取PDF
内容。然后,创建一个PyPDF2.PdfFileWriter
对象,将从读取器对象中获取的所有页面添加到写入器对象中。使用encrypt
方法为PDF
设置密码。最后,将加密后的PDF
内容写入到输出文件中。
学习资源推荐
除了上述分享,如果你也喜欢编程,想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。
这里给大家展示一下我进的兼职群和最近接单的截图
😝朋友们如果有需要的话,可以点击下方链接领取或者V扫描下方二维码联系领取,也可以内推兼职群哦~
🎁 CSDN大礼包,二维码失效时,点击这里领取👉:【学习资料合集&相关工具&PyCharm永久使用版获取方式】
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
1.Python学习路线
2.Python基础学习
01.开发工具
02.学习笔记
03.学习视频
3.Python小白必备手册
4.数据分析全套资源
5.Python面试集锦
01.面试资料
02.简历模板
🎁 CSDN大礼包,二维码失效时,点击这里领取👉:【学习资料合集&相关工具&PyCharm永久使用版获取方式】
因篇幅有限,仅展示部分资料,添加上方即可获取👆
—— 🙇♂️ 本文转自网络,如有侵权,请联系删除 🙇♂️ ——
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/79863.html