自动化是现代效率背后的推动力,在Python中找到了最佳伙伴——这是一种以其多样化的解决方案而著称的语言,旨在无缝简化任务。凭借其广泛的库支持、内置功能和蓬勃发展的贡献者社区,Python成为了简化工作流程的终极盟友,提供了无与伦比的便利。在这篇博客中,我们将探讨10个令人震惊的使用Python的自动化脚本,你需要尝试。 这是你需要尝试的自动化脚本系列的第八部分。 1、剪贴板管理器📋你是否曾经在处理多个文本片段时,失去了对你所复制内容的跟踪?是否想过拥有一个可以跟踪你一天所复制所有内容的工具? 这个自动化脚本监视你复制的一切,无缝地将每个复制的文本存储在一个流畅的图形界面中,这样你就不必在无尽的标签页中搜索,从而避免丢失宝贵的信息。 这个自动化脚本利用Pyperclip库无缝捕捉复制的数据,并集成Tkinter来视觉跟踪和管理复制的文本。 # 导入tkinter库,用于创建GUI应用程序,ttk是tkinter的扩展模块,用于提供更现代的界面元素。 import tkinter as tk from tkinter import ttk # 导入pyperclip库,可以用来复制和粘贴剪贴板内容。 import pyperclip # 定义函数,用于更新列表框的内容,将新的剪贴板内容添加到列表中。 def update_listbox(): new_item = pyperclip.paste() # 获取当前剪贴板的内容 if new_item not in X: # 如果内容不在我们的列表中,则添加它 X.append(new_item) listbox.insert(tk.END, new_item) # 在列表框末尾添加新项目 listbox.insert(tk.END, '----------------------') # 添加分隔线 listbox.yview(tk.END) # 自动滚动到列表框的底部 root.after(1000, update_listbox) # 每1000毫秒(1秒)调用一次此函数,不断更新 # 定义函数,用于处理列表框中元素的双击事件,将选中的内容复制到剪贴板。 def copy_to_clipboard(event): selected_item = listbox.get(listbox.curselection()) # 获取当前选中的列表项 if selected_item: pyperclip.copy(selected_item) # 将选中的内容复制到剪贴板 # 创建一个空列表,用于存储剪贴板内容。 X = [] # 创建主窗口 root = tk.Tk() root.title('Clipboard Manager') # 设置窗口标题 root.geometry('500x500') # 设置窗口大小 root.configure(bg='#f0f0f0') # 设置窗口背景颜色 # 创建一个框架组件,用于放置其他界面元素 frame = tk.Frame(root, bg='#f0f0f0') frame.pack(padx=10, pady=10) # 放置框架并设置边距 # 在框架内创建一个标签,显示文本提示 label = tk.Label(frame, text='Clipboard Contents:', bg='#f0f0f0') label.grid(row=0, column=0) # 使用grid布局管理器放置标签 # 创建一个滚动条 scrollbar = tk.Scrollbar(root) scrollbar.pack(side=tk.RIGHT, fill=tk.Y) # 放置滚动条在窗口的右侧,填充Y方向 # 创建一个列表框,用于显示剪贴板的内容 listbox = tk.Listbox(root, width=150, height=150, yscrollcommand=scrollbar.set) listbox.pack(pady=10) # 放置列表框并设置垂直边距 scrollbar.config(command=listbox.yview) # 设置滚动条控制列表框的垂直滚动 # 调用函数,开始更新列表框内容 update_listbox() # 绑定双击左键事件到copy_to_clipboard函数,实现双击复制功能 listbox.bind('<Double-Button-1>', copy_to_clipboard) # 运行主事件循环,等待用户交互 root.mainloop() 脚本应用: ·捕获并分类从各种来源复制的研究笔记。 ·扩展脚本可以捕获重要的日历事件、提醒、密码等。 2、代码质量检查器 每个开发者都经历过在Python代码中追踪错误的挫败感,只是为了发现自己迷失在错误迷宫中。作为开发者,我们理解编写干净高效代码的重要性——但手动分析代码质量可能是一项压力巨大的任务。 这个自动化脚本利用Pylint和Flake8 Python包进行全面的代码质量审查。比较你的代码与编码标准,并识别逻辑错误。它确保你的代码符合行业最佳实践,并保持无错误。
脚本应用: ·自动代码增强器——稍作扩展,可以用来创建一个Python脚本,识别代码中的问题并相应地进行更改。 · 自动代码审查。 3、防篡改 🚫文件篡改,也称为数据篡改,是指未经授权故意改变信息,可能包括销毁、操纵或编辑数据。 世界各地的许多威胁者滥用文件篡改技术,并在关键系统文件中引入不同的漏洞或后门,危害安全并实现未经授权的访问。 为了降低这种风险,验证文件的完整性至关重要,确保它们保持原始状态未被改变。这个自动化脚本可以帮助你测试任何文件,并识别它是否被篡改。 # 导入hashlib模块,用于加密哈希功能。 import hashlib # 导入os模块,用于操作文件和目录。 import os # 定义函数calculate_sha256,计算文件的SHA-256哈希值。 def calculate_sha256(file_path): sha256 = hashlib.sha256() # 创建一个sha256哈希对象 # 以二进制读取模式打开文件 with open(file_path, 'rb') as file: # 读取文件内容,每次读取4096字节 for chunk in iter(lambda: file.read(4096), b''): sha256.update(chunk) # 更新哈希对象的状态 return sha256.hexdigest() # 返回哈希值的十六进制表示 # 定义函数check_integrity,验证文件的完整性。 def check_integrity(file_path, expected_checksum): actual_checksum = calculate_sha256(file_path) # 计算文件的实际SHA-256哈希值 return actual_checksum == expected_checksum # 比较实际哈希值与预期哈希值是否相同 # 如果此脚本被直接运行。 if __name__ == '__main__': file_path = input('Enter the path to the file: ') # 获取用户输入的文件路径 expected_checksum = input('Enter the expected SHA-256 checksum: ') # 获取用户输入的预期SHA-256哈希值 # 检查文件是否存在 if os.path.isfile(file_path): # 调用check_integrity函数验证文件完整性 if check_integrity(file_path, expected_checksum): print('File integrity verified: The file has not been tampered with.') # 验证成功 else: print('File integrity check failed: The file may have been tampered with.') # 验证失败 else: print('Error: File not found.') # 文件不存在错误提示 4、智能交易 交易指的是购买和出售金融工具,如股票、债券、货币、商品或衍生品,目的是为了获利。期刊交易者整天都在查看不同的仪表板,试图找出是否买入或卖出的那一个完美决定。 这个自动化脚本可以帮助交易者和投资者很好地了解你想投资的任何股票。它使用Python的Prophet库,基于从雅虎财经获取的历史股票数据来预测近期的股票价格。
脚本应用 · 算法交易 · 股价比较仪表板 5、AutoImage下载器 在计算机视觉项目中,收集图像数据是一个关键挑战。正如Andrew Ng所说,如果你能收集到大量数据集,那么算法就不重要了。数据在提高模型性能和准确性方面起着关键作用。 # 导入所需的模块和函数 from simple_image_download import simple_image_download as simp # 创建一个响应对象,用于处理图片下载 response = simp.simple_image_download # 设置关键词 keyword = 'Dog' # 指定下载的图片关键词为“Dog” # 下载图片 try: response().download(keyword, 20) # 调用下载方法,尝试下载20张关键词为“Dog”的图片 print('Images downloaded successfully.') # 如果下载成功,则输出成功消息 except Exception as e: print('An error occurred:', e) # 如果下载过程中出现异常,输出错误信息 6、端口扫描器 让我们谈谈网络安全! 在计算机网络中,端口是允许不同进程或服务连接并通过网络交换数据的通信端点。端口通过数值标识,并与特定协议相关联。
7、密码管理器 关于成为数字自由职业者最糟糕的部分之一是,你需要记住许多密码,因为你每天都在为新网站注册。 这个自动化脚本可以帮助你管理所有密码,使它们既安全又只有你能访问,使用不同的加密技术。 这个脚本的最好之处在于它是一个网络应用,这意味着通过几处修改,你可以将其部署在云存储上,并且可以在任何地方访问所有密码,而不用担心安全问题。 它使用一个硬编码的自定义密钥进行加密和解密。如果你计划在共享平台上使用这个脚本,请确保将这个密钥保存在一个单独的安全文件中。 # 导入所需的库 import streamlit as st import csv from cryptography.fernet import Fernet from cryptography.fernet import InvalidToken # 自定义加密密钥(硬编码) CUSTOM_ENCRYPTION_KEY = b'u7wGgNdDFefqpr_kGxb8wJf6XRVsRwvb3QgITsD5Ft4=' # 如果您计划在共享平台上使用此脚本,请确保将此密钥保存在一个单独的安全文件中。 # 函数用于加密密码 def encrypt_password(password): cipher_suite = Fernet(CUSTOM_ENCRYPTION_KEY) encrypted_password = cipher_suite.encrypt(password.encode()) # 将密码编码后加密 return encrypted_password # 函数用于解密密码 def decrypt_password(encrypted_password): if isinstance(encrypted_password, bytes): # 检查加密密码是否为bytes类型 try: cipher_suite = Fernet(CUSTOM_ENCRYPTION_KEY) decrypted_password = cipher_suite.decrypt(encrypted_password) # 解密 return decrypted_password.decode() # 将bytes解码为字符串 except InvalidToken: return 'Invalid Token' # 若密钥不正确,返回无效令牌信息 else: return None # 函数用于将网站名和密码保存到CSV文件 def save_credentials(website_name, password): encrypted_password = encrypt_password(password) # 先加密密码 with open('credentials.csv', 'a', newline='') as csvfile: writer = csv.writer(csvfile) writer.writerow([website_name, encrypted_password.decode()]) # 将加密后的密码解码为字符串后存储 # 函数用于从CSV文件检索密码 def retrieve_password(website_name): with open('credentials.csv', 'r') as csvfile: reader = csv.reader(csvfile) for row in reader: if row[0] == website_name: encrypted_password = row[1].encode() # 重新编码为bytes return encrypted_password return None # 使用Streamlit创建Web界面 st.title('密码管理器') # 输入字段用于输入网站名和密码 website_name = st.text_input('输入网站名:') password = st.text_input('输入密码:', type='password') # 保存按钮用于保存网站名和密码 if st.button('保存'): if website_name and password: save_credentials(website_name, password) st.success('网站名和密码已成功保存。') else: st.error('请填写所有字段。') # 检索按钮用于检索密码 if st.checkbox('检索密码'): website_name = st.selectbox('选择网站名:', options=[''] + [row[0] for row in csv.reader(open('credentials.csv', 'r'))]) key = st.text_input('输入您的加密密钥:', type='password') if st.button('检索密码'): if key == str(CUSTOM_ENCRYPTION_KEY.decode()): if website_name: encrypted_password = retrieve_password(website_name) if encrypted_password: decrypted_password = decrypt_password(encrypted_password) st.success(f'网站 **{website_name}** 的密码 -> **{decrypted_password}**') else: st.error('数据库中未找到密码。') elif key == '': pass else: st.error('无效的加密密钥!') 8、批量邮件发送器 🆕 电子邮件列表是在线互动的货币,每个订阅者都是你数字部落中的宝贵成员。它们是有效数字营销的核心。 作为一个数字影响者,与你的粉丝保持互动很重要,但手动进行这一工作很困难,使用工具则可能花费一大笔钱。 这个自动化脚本利用Gmail自己的SMTP服务器发送批量电子邮件,仅需几分钟,允许你完全自定义并掌控。 确保你不要发送垃圾邮件给接收者,否则你会被Gmail列入黑名单。尝试将你的邮件限制在每天少于100封。
9、Readme.md 生成器 README.md文件作为你项目的门户,提供必要信息并吸引访客进一步探索。它被认为是你仓库中最重要的文件之一,但同时也是创建起来相当耗时的。 # 导入所需的模块 import os import hashlib import shutil # 定义函数,用于获取文件的哈希值 def get_file_hash(file_path): with open(file_path, 'rb') as f: # 以二进制读取模式打开文件 return hashlib.sha256(f.read()).hexdigest() # 使用SHA-256算法计算文件的哈希值并返回 # 定义函数,用于整理文件夹并移动重复的文件 def organize_and_move_duplicates(folder_path): # 创建一个字典来存储基于文件扩展名的目标文件夹 extension_folders = {} # 如果不存在“Duplicates”文件夹,则创建它 duplicates_folder = os.path.join(folder_path, 'Duplicates') os.makedirs(duplicates_folder, exist_ok=True) # 使用exist_ok=True避免在文件夹已存在时引发错误 # 创建一个字典来存储文件哈希值 file_hashes = {} # 遍历文件夹中的文件 for filename in os.listdir(folder_path): file_path = os.path.join(folder_path, filename) if os.path.isfile(file_path): # 确保是文件而不是目录 # 获取文件扩展名 _, extension = os.path.splitext(filename) extension = extension.lower() # 将扩展名转换为小写,以避免大小写差异导致的分类错误 # 确定目标文件夹 if extension in extension_folders: destination_folder = extension_folders[extension] else: destination_folder = os.path.join(folder_path, extension[1:]) # 移除扩展名前的点并创建目录 os.makedirs(destination_folder, exist_ok=True) extension_folders[extension] = destination_folder # 计算文件哈希值 file_hash = get_file_hash(file_path) # 检查文件是否重复 if file_hash in file_hashes: # 文件是重复的,将其移动到“Duplicates”文件夹 shutil.move(file_path, os.path.join(duplicates_folder, filename)) print(f'将重复文件 {filename} 移动到 Duplicates 文件夹。') else: # 存储文件哈希值 file_hashes[file_hash] = filename # 将文件移动到目标文件夹 shutil.move(file_path, destination_folder) print(f'将 {filename} 移动到 {destination_folder}') # 如果这个脚本被直接运行 if __name__ == '__main__': folder_path = input('请输入您要整理的文件夹路径: ') organize_and_move_duplicates(folder_path) 10、OrganizeIT 2.0 你的下载文件夹是一团乱麻吗? 当你最需要时,你是否发现自己在寻找关键文件时手忙脚乱? 你是否尝试过多次组织文件夹,但总是无法成功? 这个自动化脚本可以帮助你在几分钟内整理你的文件夹。你只需要指定你想要清理的路径,这个脚本将自动根据文件扩展名将所有文件分到不同的文件夹中。
|
|