超级实用的python代码片段汇总和详细解析(16个)(下)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 超级实用的python代码片段汇总和详细解析(16个)

超级实用的python代码片段汇总和详细解析(16个)(上):https://developer.aliyun.com/article/1489864

8.Excel表格读写

import pandas as pd
def read_excel(file_path):
    df = pd.read_excel(file_path)
    return df
def write_to_excel(data, file_path):
    df = pd.DataFrame(data)
    df.to_excel(file_path, index=False)

函数 read_excel 和 write_to_excel,用于读取和写入 Excel 文件。两个函数都使用了 Pandas 库,一个 Python 的数据分析库。


1. read_excel 函数


这个函数接受一个参数 file_path,表示要读取的 Excel 文件的路径。

2. write_to_excel 函数


这个函数接受两个参数:data 和 file_path。data 是一个字典、列表或其他可以被转换为 DataFrame 的数据结构,file_path 是要写入数据的 Excel 文件的路径。


通过这两个函数,你可以方便地读取和写入 Excel 文件,而不需要关心底层的 Excel 文件操作细节。

9.合并Excel表格工作簿

import pandas as pd
def merge_sheets(file_path, output_file_path):
    xls = pd.ExcelFile(file_path)
    df = pd.DataFrame()
    for sheet_name in xls.sheet_names:
        sheet_df = pd.read_excel(xls, sheet_name)
        df = df.append(sheet_df)
        df.to_excel(output_file_path, index=False)

函数 merge_sheets 用于将多个 Excel 工作表(sheets)合并到一个单一的 DataFrame 中,并将该 DataFrame 保存到一个新的 Excel 文件中。以下是代码的逐行解释:


  1. import pandas as pd
    导入 pandas 库,并为其指定一个别名 pd。Pandas 是一个用于数据分析和处理的 Python 库。
  2. def merge_sheets(file_path, output_file_path):
    定义一个名为 merge_sheets 的函数,该函数接受两个参数:file_path(要合并的 Excel 文件的路径)和 output_file_path(输出文件的路径)。
  3. xls = pd.ExcelFile(file_path)
    使用 pandas 的 ExcelFile 类来读取 file_path 指定的 Excel 文件,并将其存储在 xls 变量中。
  4. df = pd.DataFrame()
    创建一个空的 DataFrame 对象 df。这个 DataFrame 将用于存储从 Excel 文件的不同工作表中读取的数据。

5.for sheet_name in xls.sheet_names:
遍历 xls 对象中存储的所有工作表名称。sheet_names 是一个包含所有工作表名称的列表。

6.sheet_df = pd.read_excel(xls, sheet_name)

对于每一个工作表名称 sheet_name,使用 read_excel 函数从 xls 对象中读取该工作表的数据,并将其存储在 sheet_df(一个 DataFrame 对象)中。


7.df = df.append(sheet_df)

将 sheet_df 中的数据追加到 df 中。这样,df 最终将包含所有工作表的数据。


8.df.to_excel(output_file_path, index=False)

将合并后的 DataFrame df 保存到指定的 output_file_path 路径。index=False 表示在保存时不包含 DataFrame 的索引。

需要注意的是,虽然这段代码能够合并多个工作表,但它有一个效率问题。在循环中,每次迭代都会将 sheet_df 追加到 df 并立即保存到 output_file_path。这意味着每次迭代都会覆盖之前的输出文件。实际上,你可能只想在循环结束后保存一次合并后的 DataFrame。正确的做法应该是将 df.to_excel(output_file_path, index=False) 语句移出循环,放在循环结束之后。这样,所有工作表的数据都会被合并到一个 DataFrame 中,然后一次性保存到输出文件。

10.数据库SQL查询

import sqlite3
def connect_to_database(database_path):
    connection = sqlite3.connect(database_path)
    return connection
def execute_query(connection, query):
    cursor = connection.cursor()
    cursor.execute(query)
    result = cursor.fetchall()
    return result

这段代码的两个函数分别用于连接数据库及执行SQL查询。以下是代码的逐行解释:

  1. 导入sqlite3模块:这行代码导入了Python的sqlite3模块,该模块提供了一个轻量级的磁盘上数据库,不需要单独的服务器进程或系统配置。
  2. connect_to_database函数:接受一个参数database_path,它代表要连接的SQLite数据库文件的路径。

3.execute_query函数:这个函数接受两个参数:connection:一个到SQLite数据库的连接对象,通常是通过connect_to_database 函数获得的。 query:一个SQL查询字符串,你希望执行这个查询来从数据库中检索数据。 

使用示例:

# 连接到数据库  
conn = connect_to_database('example.db')  
  
# 创建一个新的表  
create_table_query = '''  
CREATE TABLE IF NOT EXISTS users (  
    id INTEGER PRIMARY KEY,  
    name TEXT NOT NULL,  
    age INTEGER  
)  
'''  
execute_query(conn, create_table_query)  
  
# 插入一些数据  
insert_data_query = '''  
INSERT INTO users (name, age) VALUES (?, ?)  
'''  
execute_query(conn, insert_data_query, ('Alice', 30))  
execute_query(conn, insert_data_query, ('Bob', 25))  
  
# 查询所有数据  
select_all_query = 'SELECT * FROM users'  
users = execute_query(conn, select_all_query)  
for user in users:  
    print(user)  
  
# 关闭连接  
conn.close()

11. 系统进程查杀

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()

这段代码使用了 psutil 库来查询和管理操作系统中的进程。psutil 是一个跨平台库,能够获取系统运行状态信息,包括 CPU、内存、磁盘、网络、进程等。代码中定义了两个函数:


get_running_processes(): 这个函数返回一个包含当前运行的所有进程信息的列表。每个进程信息是一个字典,包含进程ID(pid)、进程名称(name)和进程所属用户名(username)。


kill_process_by_name(process_name): 这个函数接受一个进程名称作为参数,并尝试杀死(结束)所有与该名称匹配的进程。


这里有一些要注意的点:


psutil.process_iter() 函数用于遍历系统中的所有进程。你可以通过传递一个字段列表来限制返回的信息量,这里我们只关心进程的 pid、name 和 username。

p.info 是一个字典,包含了进程的所有信息。我们通过 p.info['name'] 来获取进程的名称。

p.kill() 方法用于结束进程。这个方法会发送一个 SIGTERM 信号给进程,告诉它应该优雅地关闭。如果进程不响应,可能会发送一个 SIGKILL 信号来强制结束它。

请注意,结束进程(特别是你没有权限结束的进程)可能会引发异常。在实际使用中,你可能需要添加适当的错误处理逻辑来处理这些异常。


此外,使用 kill_process_by_name 函数时要小心,因为它会无条件地杀死所有匹配的进程,这可能会导致不期望的行为。你可能需要添加一些额外的逻辑来确认你要结束的进程确实是你想要的,或者至少确保你不会意外地结束重要的系统进程。

12.图像尺寸调整和裁剪

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_imagecrop_image 分别用于调整图像的大小和裁剪图像。这些函数都使用了Pillow库(PIL),这是一个用于处理图像的库。

  1. resize_image 函数:
  • 参数
  • input_path:要调整大小的图像的输入路径。
  • output_path:调整大小后的图像的输出路径。
  • width:新图像的宽度。
  • height:新图像的高度。

2.功能:


打开位于 input_path 的图像。

使用 Image.ANTIALIAS 作为重采样方法,将图像的大小调整为 width 和 height。ANTIALIAS 是一种高质量的重采样滤镜,可以减少调整大小时产生的锯齿状边缘。

保存调整大小后的图像到 output_path。

2.crop_image 函数:

  • 参数
  • input_path:要裁剪的图像的输入路径。
  • output_path:裁剪后的图像的输出路径。
  • left:裁剪框的左边界。
  • top:裁剪框的上边界。
  • right:裁剪框的右边界。
  • bottom:裁剪框的下边界。
  • 功能
  • 打开位于 input_path 的图像。
  • 使用 crop 方法,根据提供的 lefttoprightbottom 边界裁剪图像。
  • 保存裁剪后的图像到 output_path


这些函数为图像处理提供了基本的功能,可以帮助你轻松地调整图像的大小或裁剪图像。

13.图片添加水印

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
def add_watermark(input_path, output_path, watermark_text):
    image = Image.open(input_path)
    draw = ImageDraw.Draw(image)
    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 用于在给定的图像上添加水印。水印是一个文本字符串,被放置在图像的指定位置。这里使用了Python的Pillow库(PIL的一个分支)来处理图像。

以下是代码的详细解释:

  1. 导入必要的模块:
  • Image: 用于打开、处理和保存多种格式的图像文件。
  • ImageDraw: 提供了简单的图形绘制功能,用于在图像上绘制。
  • ImageFont: 用于处理字体,这样你就可以在图像上绘制文本。

2.定义 add_watermark 函数:

  • input_path: 要添加水印的原始图像的路径。
  • output_path: 添加水印后的图像的保存路径。
  • watermark_text: 要作为水印添加到图像上的文本。

3.函数内部逻辑:

  • image = Image.open(input_path): 打开位于 input_path 的图像文件。
  • draw = ImageDraw.Draw(image): 创建一个可以在上面绘制的Draw对象。
  • font = ImageFont.truetype('arial.ttf', 36): 使用TrueType或OpenType字体文件创建一个字体对象。这里使用了Arial字体,大小为36。你需要确保arial.ttf文件在你的工作目录中,或者提供正确的路径。

draw.text((10, 10), watermark_text, fill=(255, 255, 255, 128), font=font): 在图像上的位置(10, 10)绘制水印文本。文本的颜色是白色(RGB值为(255, 255, 255)),并且有一定的透明度(alpha值为128)。

  • image.save(output_path): 保存带有水印的图像到output_path指定的路径。

这个函数允许你简单地为图像添加水印,但你可能需要根据你的具体需求调整字体、大小、颜色、位置等参数。

14. 创建图像缩略图

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 的函数,用于创建一个指定大小的缩略图。这个函数使用了 Python 的 Pillow 库(PIL 的一个分支)来处理图像。以下是代码的详细解释:

1.导入 Image 类:from PIL import Image,这行代码从 PIL 库中导入了 Image 类,该类提供了打开、操作和保存图像文件的方法。

2.定义 create_thumbnail 函数,三个参数分别为:

* `input_path`: 输入图像的路径。  

* `output_path`: 缩略图图像的保存路径。  

* `size`: 缩略图的大小,默认为 `(128, 128)`(即宽度为 128 像素,高度为 128 像素)。

3.打开输入图像:image = Image.open(input_path)

这行代码使用 Image.open 方法打开位于 input_path 的图像文件,并将其存储在 image 变量中。

4.创建缩略图:image.thumbnail(size)

这行代码使用 Image 对象的 thumbnail 方法来创建缩略图。thumbnail 方法会保持图像的纵横比,同时确保图像的最大尺寸不超过 size 参数指定的宽度和高度。如果原始图像的宽度和高度都小于 size,则图像不会进行缩放。

5.保存缩略图:image.save(output_path)

这行代码将创建好的缩略图保存到 output_path 指定的路径。

6.调用示例:使用这个函数,你可以轻松地为任何图像创建一个指定大小的缩略图。

例如:create_thumbnail('path/to/input.jpg', 'path/to/output.jpg', size=(200, 200))

这行代码将创建一个最大尺寸为 200x200 像素的缩略图,并将其保存到 'path/to/output.jpg'。

15.PDF中提取文本

import PyPDF2
def extract_text_from_pdf(file_path):
    with open(file_path, 'rb') as f:
        pdf_reader = PyPDF2.PdfFileReader(f)
        text = ''
        for page_num in range(pdf_reader.numPages):
            page = pdf_reader.getPage(page_num)
            text += page.extractText()
    return text

这段代码是一个用于从PDF文件中提取文本的函数,使用了PyPDF2库。

  1. 导入PyPDF2库。
  2. 定义函数extract_text_from_pdf,它接受一个参数file_path,这是要从中提取文本的PDF文件的路径。
  3. 使用with open(file_path, 'rb') as f:打开文件,'rb'表示以二进制读模式打开文件。
  4. 创建一个PdfFileReader对象pdf_reader来读取打开的PDF文件。
  5. 初始化一个空字符串text,用于存储从PDF文件中提取的文本。
  6. 使用for循环遍历PDF文件中的每一页(range(pdf_reader.numPages)生成一个从0到pdf_reader.numPages - 1的整数序列)。
  7. 对于每一页,使用getPage(page_num)方法获取该页的对象,然后使用extractText()方法提取该页的文本,并将其添加到text字符串中。
  8. 函数最后返回存储了所有提取文本的text字符串。

请注意,PyPDF2extractText()方法可能无法完美地提取所有PDF文件中的文本,特别是对于那些包含复杂布局或特殊字体的文件。对于这种情况,可能需要使用其他更高级的PDF处理库,如PDFMinerpdfplumber

16. 合并多个PDF文件

import PyPDF2  
def merge_pdfs(input_paths, output_path):  
    pdf_writer = PyPDF2.PdfFileWriter()  
    for path in input_paths:  
        with open(path, 'rb') as f:  
            pdf_reader = PyPDF2.PdfFileReader(f)  
            for page_num in range(pdf_reader.getNumPages()):  
                page = pdf_reader.getPage(page_num)  
                pdf_writer.addPage(page)  
    with open(output_path, 'wb') as f:  
        pdf_writer.write(f)

这段代码使用PyPDF2库合并多个PDF文件。函数 merge_pdfs 接受一个包含多个PDF文件路径的列表input_paths和一个输出文件路径output_path。然后,它遍历输入文件列表,读取每个文件,并将每一页添加到一个PdfFileWriter对象中。最后,它将所有页面写入到指定的输出文件中。以下是这段代码的逐行解释:

1. import PyPDF2

导入PyPDF2库,这是一个用于处理PDF文件的Python库。


2.def merge_pdfs(input_paths, output_path):

定义一个名为merge_pdfs的函数,它接受两个参数:一个包含多个PDF文件路径的列表input_paths和一个输出文件路径output_path。


3.pdf_writer = PyPDF2.PdfFileWriter()

创建一个PdfFileWriter对象,该对象将用于写入合并后的PDF文件的内容。


4.for path in input_paths:

遍历input_paths列表中的每个文件路径。


5.with open(path, 'rb') as f:

使用with语句打开当前路径下的PDF文件,'rb'表示以二进制读模式打开文件。文件对象存储在变量f中。


6.pdf_reader = PyPDF2.PdfFileReader(f)

创建一个PdfFileReader对象来读取打开的PDF文件。


7.for page_num in range(pdf_reader.getNumPages()):

遍历当前PDF文件的每一页。getNumPages()方法返回PDF文件中的页面数量。


8.page = pdf_reader.getPage(page_num)

使用getPage方法获取当前页码对应的页面对象。


9.pdf_writer.addPage(page)

将获取到的页面对象添加到PdfFileWriter对象中,以便稍后写入到输出文件中。


10.with open(output_path, 'wb') as f:

使用with语句打开(或创建)输出文件,准备以二进制写模式写入合并后的PDF内容。


11.pdf_writer.write(f)

将PdfFileWriter对象中的所有页面写入到输出文件中。


当你调用这个函数并传入一个PDF文件路径列表和一个输出文件路径时,它将读取所有输入文件,并将它们的页面合并到一个单一的输出文件中。请确保你安装了PyPDF2库(使用pip install PyPDF2),并且输入的PDF文件都是有效的。

目录
相关文章
|
3天前
|
Python
关于 Python 列表解析式的作用域问题
关于 Python 列表解析式的作用域问题
29 11
|
1天前
|
数据可视化 数据挖掘 API
Python中的数据可视化利器:Matplotlib与Seaborn对比解析
在Python数据科学领域,数据可视化是一个重要环节。它不仅帮助我们理解数据,更能够让我们洞察数据背后的故事。本文将深入探讨两种广泛使用的数据可视化库——Matplotlib与Seaborn,通过对比它们的特点、优劣势以及适用场景,为读者提供一个清晰的选择指南。无论是初学者还是有经验的开发者,都能从中找到有价值的信息,提升自己的数据可视化技能。
|
3天前
|
Rust Python
Python 解析 toml 配置文件
Python 解析 toml 配置文件
9 1
|
3天前
|
Python
Python 解析 yaml 配置文件
Python 解析 yaml 配置文件
10 0
|
3天前
|
Python
Python 解析 ini 配置文件
Python 解析 ini 配置文件
11 0
|
4天前
|
数据挖掘 索引 Python
Python数据挖掘编程基础3
字典在数学上是一个映射,类似列表但使用自定义键而非数字索引,键在整个字典中必须唯一。可以通过直接赋值、`dict`函数或`dict.fromkeys`创建字典,并通过键访问元素。集合是一种不重复且无序的数据结构,可通过花括号或`set`函数创建,支持并集、交集、差集和对称差集等运算。
14 9
|
3天前
|
存储 开发者 Python
探索Python编程的奥秘
【9月更文挑战第29天】本文将带你走进Python的世界,通过深入浅出的方式,解析Python编程的基本概念和核心特性。我们将一起探讨变量、数据类型、控制结构、函数等基础知识,并通过实际代码示例,让你更好地理解和掌握Python编程。无论你是编程新手,还是有一定基础的开发者,都能在这篇文章中找到新的启示和收获。让我们一起探索Python编程的奥秘,开启编程之旅吧!
|
4天前
|
人工智能 小程序 API
文字转语音神器+Python编程搞定语音报时小程序
文字转语音神器+Python编程搞定语音报时小程序
11 2
|
4天前
|
Python
Python编程的循环结构小示例(二)
Python编程的循环结构小示例(二)
|
4天前
|
算法 Python
Python编程的函数—内置函数
Python编程的函数—内置函数
下一篇
无影云桌面