N27※python脚本

1> 一段时间内只允许调用1次函数

import time

def once_per_period(period):
    def decorator(func):
        last_called = 0
        def wrapper(*args, **kwargs):
            nonlocal last_called
            now = time.time()
            if now - last_called > period:
                last_called = now
                return func(*args, **kwargs)
        return wrapper
    return decorator
@once_per_period(60) # 60秒内只能调用一次
def my_func():
    print("Hello World")
    
my_func() # 第一次调用,输出:Hello World
time.sleep(30)
my_func() # 第二次调用,未到间隔时间,不执行任何操作
time.sleep(40)
my_func() # 第三次调用,已过间隔时间,输出:Hello World

2> 批量更改图片格式

图片文件格式 : BMP/ EPS/ GIF/ ICNS/ ICO/ JPEG/ JPEG 2000/ PNG/ TGA/ TIFF/ WebP/ XBM

# pip3 install Pillow==9.5.0
from PIL import Image
import os


input_folder = "E:/Desktop/jpg/"
output_format = ".png"
output_folder = "E:/Desktop/convert/"


for file_name in os.listdir(input_folder):
    if file_name.endswith(".jpg") or file_name.endswith(".jpeg") or file_name.endswith(".png"):
        image = Image.open(input_folder + file_name)
        new_file_name = os.path.splitext(file_name)[0] + output_format
        image.save(output_folder + new_file_name, "PNG")

3> 文件批量重命名

import os
def file_rename(path):

    file_list = os.listdir(path)

    for item in file_list:
        file = path + '\\' + item
        if os.path.isdir(file):
            file_rename(file)
        else:
            item = item.replace('【','_')
            file_new_name = path + '\\'   +item
            print(file_new_name)
            print('='*80)
            os.rename(file,file_new_name)

folder = r"E:\Desktop\convert"
file_rename(folder)

4> word文件批量转成pdf

import os
# pip3 install pywin32==306
from win32com import client

# 定义要转换的目录
dir_path =  r"E:\Desktop\doc"

# 启动Word应用程序
word = client.DispatchEx("Word.Application")

# 遍历目录下的所有文件
for filename in os.listdir(dir_path):
    # 检查文件是否为Word文档
    if not filename.endswith(".doc") and not filename.endswith(".docx"):
        continue

    # 构造完整路径
    filepath = os.path.join(dir_path, filename)

    # 打开Word文档
    doc = word.Documents.Open(filepath)

    # 构造PDF文件名
    name_num = filename.rfind('.')
    pdf_filename = filename[:name_num] + ".pdf"
    pdf_filepath = os.path.join(dir_path, pdf_filename)

    # 转换为PDF格式并保存,如果是doc转成docx,则FileFormat=16
    doc.SaveAs(pdf_filepath, FileFormat=17)

    # 关闭Word文档
    doc.Close()

# 退出Word应用程序
word.Quit()

5> 多个pdf文件合并操作

import os
# pip3 install PyPDF2==3.0.1
from PyPDF2 import PdfReader, PdfMerger

# 获取要合并的所有PDF文件的路径
pdf_folder = r"E:\Desktop\doc"
pdf_files = [f for f in os.listdir(pdf_folder) if f.endswith('.pdf')]
pdf_files.sort()

# 创建PdfMerger对象并将所有PDF文件合并为单个文件
merger = PdfMerger()
for pdf_file in pdf_files:
    with open(os.path.join(pdf_folder, pdf_file), 'rb') as f:
        merger.append(PdfReader(f))

with open(r"E:\Desktop\doc\output\merged.pdf", "wb") as out_file:
    merger.write(out_file)

6> 将excel中的数据插入sql

import pandas as pd
import pymysql

# 连接 MySQL 数据库
db = pymysql.connect(
    host='192.168.3.100',
    port=3306,
    user='root',
    password='admin1234',
    db='database'
)

# 读取 Excel 文件
df = pd.read_excel('信息.xlsx', sheet_name='Sheet1', usecols=['单位名称', '单位详细地址'])

# 设置游标
cursor = db.cursor()
# for index, row in df.head(10).iterrows():
for index, row in df.iterrows():
    # sql语句
    sql =  "insert into id(`名称`,`详细地址`)    \
            values ('%s', '%s');" %(row['单位名称'], row['单位详细地址'])

    try:
        # 执行 sql 语句
        cursor.execute(sql)
        # 提交稳定数据
        db.commit()
        print('第' + str(index+1) + '条数据插入成功')
    except:
        db.rollback()
        print('第' + str(index+1) + '条数据插入失败')
# 关闭数据库连接
db.close()

© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享