在Python编程的世界中,掌握一些经典的、实用的脚本是每个开发者进阶之路上不可或缺的一步。
这里笔者与大家分享四个有趣且实用的Python脚本!
1.彩色图像转黑白图像(批量操作)
该脚本展示了如何从当前目录下读取所有.jpg和.png文件并将其转换为黑白图像。如果你想批量转换指定目录下的所有图片,只需修改os.listdir('.')为你需要的目录路径即可。
from PIL import Image import os def convert_to_grayscale(image_path): # 打开图片 img = Image.open(image_path) # 转换为灰度模式(黑白) grayscale_img = img.convert('L') # 保存新的黑白图像 output_filename = os.path.splitext(image_path)[0] + '_gray.png' # 添加_gray后缀以区分原图 grayscale_img.save(output_filename) # 遍历当前目录下的所有.jpg和.png文件 for filename in os.listdir('.'): if filename.endswith(('.jpg', '.png')): image_path = os.path.join('.', filename) convert_to_grayscale(image_path)
2.计算你的年龄
该脚本展示了如何计算并显示你的年龄的年数、月数和天数。
Python 脚本:计算用户年龄的精确年数、月数和天数
# Python 脚本:计算用户年龄的精确年数、月数和天数 ```python import time from calendar import isleap # 判断闰年函数 def is_leap_year(year): """ 接收一个整数年份作为参数,判断该年是否为闰年并返回布尔值。 """ return isleap(year) # 返回指定月份天数的函数 def days_in_month(month, leap_year): """ 接收一个整数月份(1-12)和一个布尔值(表示当年是否为闰年), 返回该月份的天数。 """ if month in [1, 3, 5, 7, 8, 10, 12]: return 31 elif month in [4, 6, 9, 11]: return 30 elif month == 2 and leap_year: return 29 elif month == 2 and not leap_year: return 28 # 获取当前时间信息 current_time = time.localtime(time.time()) # 获取用户输入 name = input("请输入您的姓名: ") age = int(input("请输入您的年龄: ")) # 计算用户的出生年份 birth_year = current_time.tm_year - age # 初始化计算总天数 total_days = 0 # 计算从出生年份到当前年份的所有天数 for year in range(birth_year, current_time.tm_year + 1): # 根据年份判断是否为闰年,并累加相应的天数 total_days += 366 if is_leap_year(year) else 365 # 计算从出生年份到当前月份的所有额外天数 for month in range(1, current_time.tm_mon): # 判断对应年份是否为闰年,获取该月天数并累加 leap_status = is_leap_year(current_time.tm_year) if month <= current_time.tm_mon else is_leap_year(current_time.tm_year - 1) total_days += days_in_month(month, leap_status) # 累加当前日期天数 total_days += current_time.tm_mday # 输出结果 print(f"{name} 的年龄是 {age} 年或 {current_time.tm_mon} 个月或 {total_days} 天")
3.JSON转CSV
该脚本展示了如何从JSON文件中提取数据,并将其转换成CSV文件。
# 导入Python的json模块,用于处理JSON数据 import json # 判断是否为脚本主入口 if __name__ == '__main__': try: # 读取JSON文件,并将其内容转换为Python对象(这里是一个列表,其中每个元素是字典) with open('input.json', 'r') as f: data = json.loads(f.read()) # 初始化输出字符串,将第一个字典的所有键按逗号分隔拼接成CSV表头 output = ','.join([*data[0].keys()]) # 遍历JSON数据中的每个字典对象 for obj in data: # 拼接每条记录的值,按照指定顺序("Name", "age", "birthyear")与逗号分隔写入一行 output += f'\n{obj["Name"]},{obj["age"]},{obj["birthyear"]}' # 打开名为 'output.csv' 的文件进行写操作,并将处理好的CSV格式数据写入文件 with open('output.csv', 'w') as f: f.write(output) except Exception as ex: # 如果在执行过程中出现任何异常 # 输出错误信息,包含具体的异常描述 print(f'Error: {str(ex)}')
4.低电量通知
该脚本展示了如何获取设备系统电池信息,然后检查电池电量百分比是否低于30%且未连接电源。如果满足这两个条件,则会发送一个桌面通知提醒用户。
import psutil # 获取电池信息 battery = psutil.sensors_battery() plugged = battery.power_plugged percent = battery.percent # 检查电池电量并发送通知(在电量低于30%且未插电源时) if percent <= 30 and not plugged: # 对于Linux环境或跨平台通知可以使用pynotifier try: from pynotifier import Notification Notification( description=str(percent) + "% Battery remain!!", duration=5, # Duration in seconds ).send() except ImportError: print("pynotifier is not installed. Install it first.") # 对于Windows环境,请确保已经安装了win10toast,并使用它来发送通知 try: from win10toast import ToastNotifier toaster = ToastNotifier() toaster.show_toast( "Battery Low", str(percent) + "% Battery remain!!", duration=5, threaded=True ) except ImportError: print("win10toast is not installed. Install it first.")
原文地址:https://mp.weixin.qq.com/s?__biz=Mzg2MzkwNDM0OQ==&mid=2247487203&idx=1&sn=b8f8bb15b9415009e7d2a622a9eeed0e