Python小工具包

本文涉及的产品
.cn 域名,1个 12个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 【5月更文挑战第2天】构建了一个Python小工具包,包含获取IP、域名解析、JSON格式化和时间戳转换的函数。通过`get_ip_address`和`resolve_domain`实现网络任务,`format_json`用于美化JSON数据,`timestamp_to_datetime`转换时间戳。这些函数可提高开发效率,易于整合到项目中,展现Python的简洁和灵活性。

Python是一种强大而灵活的编程语言,它的简洁语法和庞大的生态系统使得开发者能够轻松地构建各种应用和工具。在本文中,我们将一起构建一个小工具包,其中包含了一些常见任务的函数,如IP获取、域名解析、JSON格式化和时间戳转换。

1. IP获取和域名解析

首先,我们创建了两个函数,get_ip_addressresolve_domain,用于获取给定域名的IP地址以及解析给定IP地址的域名。这对于网络相关的任务非常有用。

import socket

def get_ip_address(domain):
    """
    获取指定域名的 IP 地址
    """
    try:
        ip_address = socket.gethostbyname(domain)
        return ip_address
    except socket.error as e:
        return f"Error: {e}"

def resolve_domain(ip_address):
    """
    解析指定 IP 地址的域名
    """
    try:
        domain = socket.gethostbyaddr(ip_address)
        return domain[0]
    except socket.error as e:
        return f"Error: {e}"

运行截图:

image-20240312165800341

2. JSON格式化

其次,我们定义了 format_json 函数,用于将JSON数据格式化成易读的字符串形式。这对于处理API响应或配置文件等数据结构非常方便。

import json

def format_json(data):
    """
    格式化 JSON 数据
    """
    try:
        formatted_json = json.dumps(data, indent=4)
        return formatted_json
    except json.JSONDecodeError as e:
        return f"Error: {e}"
json_data = {"key1": "value1", "key2": "value2"}
formatted_json = format_json(json_data)
print("Formatted JSON:")
print(formatted_json)

image-20240312165835210

3. 时间戳转换

最后,我们有一个 timestamp_to_datetime 函数,用于将时间戳转换为人类可读的日期时间格式。这对于处理日志文件或其他包含时间戳的数据非常实用。

from datetime import datetime

def timestamp_to_datetime(timestamp):
    """
    将时间戳转换为日期时间格式
    """
    try:
        dt_object = datetime.utcfromtimestamp(timestamp)
        return dt_object.strftime('%Y-%m-%d %H:%M:%S')
    except ValueError as e:
        return f"Error: {e}"
timestamp = 1647091200  # 2022-03-12 00:00:00 UTC
formatted_datetime = timestamp_to_datetime(timestamp)
print(f"Formatted Datetime: {formatted_datetime}")

image-20240312165859474

4. 示例用法

最后,我们展示了这些函数的简单用法,并说明如何将它们整合到你的项目中。

if __name__ == "__main__":
    domain_to_resolve = "example.com"
    ip_address = get_ip_address(domain_to_resolve)
    print(f"IP Address of {domain_to_resolve}: {ip_address}")

    resolved_domain = resolve_domain(ip_address)
    print(f"Resolved Domain of {ip_address}: {resolved_domain}")

    json_data = {
   
   "key1": "value1", "key2": "value2"}
    formatted_json = format_json(json_data)
    print("Formatted JSON:")
    print(formatted_json)

    timestamp = 1647091200  # 2022-03-12 00:00:00 UTC
    formatted_datetime = timestamp_to_datetime(timestamp)
    print(f"Formatted Datetime: {formatted_datetime}")

通过这个简单而实用的小工具包,你可以方便地执行一些常见的任务,同时也为你的项目提供了一些基础的功能。将这些函数整合到你的代码中,可以大大提高开发效率。

总的来说,Python的简洁性和灵活性使得构建这样的小工具包变得非常容易,希望这个简单的例子能够激发你构建更强大工具包的灵感!

5.完整代码可运行

import socket
import json
from datetime import datetime

def get_ip_address(domain):
    """
    获取指定域名的 IP 地址
    """
    try:
        ip_address = socket.gethostbyname(domain)
        return ip_address
    except socket.error as e:
        return f"Error: {e}"

def resolve_domain(ip_address):
    """
    解析指定 IP 地址的域名
    """
    try:
        domain = socket.gethostbyaddr(ip_address)
        return domain[0]
    except socket.error as e:
        return f"Error: {e}"

def format_json(data):
    """
    格式化 JSON 数据
    """
    try:
        formatted_json = json.dumps(data, indent=4)
        return formatted_json
    except json.JSONDecodeError as e:
        return f"Error: {e}"

def timestamp_to_datetime(timestamp):
    """
    将时间戳转换为日期时间格式
    """
    try:
        dt_object = datetime.utcfromtimestamp(timestamp)
        return dt_object.strftime('%Y-%m-%d %H:%M:%S')
    except ValueError as e:
        return f"Error: {e}"

# 示例用法
if __name__ == "__main__":
    domain_to_resolve = "baidu.com"
    ip_address = get_ip_address(domain_to_resolve)
    print(f"IP Address of {domain_to_resolve}: {ip_address}")

    resolved_domain = resolve_domain(ip_address)
    print(f"Resolved Domain of {ip_address}: {resolved_domain}")

    json_data = {"key1": "value1", "key2": "value2"}
    formatted_json = format_json(json_data)
    print("Formatted JSON:")
    print(formatted_json)

    timestamp = 1647091200  # 2022-03-12 00:00:00 UTC
    formatted_datetime = timestamp_to_datetime(timestamp)
    print(f"Formatted Datetime: {formatted_datetime}")

运行结果:
image-20240312165931761

总结

在这篇技术博客中,我们探讨了如何使用Python构建一个简单而实用的小工具包,包含了处理IP获取、域名解析、JSON格式化和时间戳转换等常见任务的函数。通过四个核心函数,我们能够轻松地执行网络操作、处理JSON数据和转换时间戳,提高了开发效率。

首先,通过 get_ip_addressresolve_domain 函数,我们实现了获取域名的IP地址和解析IP地址的域名的功能,适用于网络相关的任务。接着,我们介绍了 format_json 函数,用于将JSON数据格式化成易读的字符串形式,便于处理API响应或配置文件等。最后,通过 timestamp_to_datetime 函数,我们展示了将时间戳转换为日期时间格式的实用性,适用于处理日志文件等需要时间标记的数据。

总的来说,这个小工具包为开发者提供了一组简单而灵活的工具,可以轻松应对常见任务。Python的简洁语法和庞大的生态系统使得构建这样的小工具包变得非常容易。通过将这些函数整合到你的项目中,你可以更加高效地处理各种任务,同时为你的代码库增添一些基础的功能。希望这个简单的例子能够启发你构建更强大、更定制化的工具包,提升你的开发体验。

目录
相关文章
WK
|
17天前
|
Python
如何在Python中导入包
在 Python 中,包是一种组织代码的方式,通过包含 `__init__.py` 文件(在 Python 3.3 及以上版本可选)的目录实现。包内可以包含多个模块(`.py` 文件)和其他子包。导入包有多种方式:整体导入包、导入特定模块、导入特定函数或类、导入子包等。推荐的做法是明确指定导入内容以提高代码的可读性和可维护性。此外,确保包目录结构正确,并将其添加到 Python 的搜索路径中。对于分发包,使用 setuptools 和 pip 等工具更为便捷。
WK
112 66
WK
|
17天前
|
Python
如何在Python中创建包
在Python中创建包十分简便,主要涉及目录结构的设置及`__init__.py`文件的配置。虽然Python 3.3后空`__init__.py`文件不再强制要求,但在特定场景下保留它有助于保持兼容性或执行包初始化代码。创建包的具体步骤包括:构建目录结构、编写模块代码、(可选)编写初始化代码等。例如,可以创建一个名为`mypackage`的目录,其中包含`__init__.py`及多个模块文件如
WK
107 62
|
24天前
|
JSON 测试技术 API
Python开发解析Swagger文档小工具
文章介绍了如何使用Python开发一个解析Swagger文档的小工具,该工具可以生成符合httprunner测试框架的json/yaml测试用例,同时还能输出Excel文件,以方便测试人员根据不同需求使用。文章提供了详细的开发步骤、环境配置和使用示例,并鼓励读者为该开源项目贡献代码和建议。
22 1
Python开发解析Swagger文档小工具
WK
|
18天前
|
开发者 Python
Python中的包是什么?
在Python中,包是一种组织模块的方式,用于实现代码重用和模块化。通过包含`__init__.py`文件的目录定义包,形成树状结构,便于管理大型项目。包提高了代码的可读性和可维护性,允许重用现有代码,并避免模块名冲突。使用点操作符导入包中的模块,`__init__.py`可在包导入时执行初始化代码。从Python 3.3起,还可使用命名空间包来组织模块。掌握包的使用对大型Python项目开发至关重要。
WK
16 5
|
19天前
|
JSON JavaScript API
用Python编写小工具下载OSM路网数据
用Python编写小工具下载OSM路网数据
|
15天前
|
测试技术 API 开发者
Python 魔法:打造你的第一个天气查询小工具自动化测试框架的构建与实践
【8月更文挑战第31天】在这篇文章中,我们将一起踏上编程的奇妙旅程。想象一下,只需几行代码,就能让计算机告诉你明天是否要带伞。是的,你没有听错,我们将用Python这把钥匙,解锁天气预报的秘密。不论你是编程新手还是想拓展技能的老手,这篇文章都会为你带来新的视角和灵感。所以,拿起你的键盘,让我们一起创造属于自己的天气小工具吧!
WK
|
18天前
|
开发工具 git Python
如何在Python中创建包?
在Python中创建包十分简便,主要步骤包括:创建目录(如 `mypackage`),并根据需求添加空的或含初始化代码的 `__init__.py` 文件;接着在该目录下添加 `.py` 文件作为模块;如有需要,可以进一步创建子包以形成层次结构。创建完成后,即可在其他脚本中导入并使用这些包。为避免名称冲突,请选择独特的包名,并考虑使用版本控制系统(如Git)管理代码变更。对于需分发的包,还应准备 `setup.py` 文件以方便构建与发布。
WK
16 3
|
20天前
|
项目管理 数据安全/隐私保护 Python
使用poetry来更优雅的管理 python 包
Poetry 的优势在于它提供了一个统一的工具来处理 Python 项目的整个生命周期,从依赖管理到打包和发布。它的依赖解析器非常强大,能够有效地处理复杂的依赖关系。此外,Poetry 还提供了一个直观的命令行界面,使得项目管理变得更加简单。 对于团队协作和项目部署来说,Poetry 的依赖锁定功能(通过 poetry.lock 文件)特别有用,因为它确保了所有环境中使用相同版本的依赖。
|
22天前
|
Python
【Azure 应用服务】如何为Web Jobs 安装Python包呢?
【Azure 应用服务】如何为Web Jobs 安装Python包呢?
【Azure 应用服务】如何为Web Jobs 安装Python包呢?