Python小工具包

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 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的简洁语法和庞大的生态系统使得构建这样的小工具包变得非常容易。通过将这些函数整合到你的项目中,你可以更加高效地处理各种任务,同时为你的代码库增添一些基础的功能。希望这个简单的例子能够启发你构建更强大、更定制化的工具包,提升你的开发体验。

目录
相关文章
|
8天前
|
Python
|
8天前
|
Python
python解包字典到新的字典
【7月更文挑战第5天】
12 1
|
14天前
|
Python
Python中解包使用星号(*)进行灵活解包
【6月更文挑战第21天】
18 2
|
3天前
|
存储 Python
Python之日期和时间包datetime的使用
1、基本定义 1.1 时间戳 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数(或总毫秒数)。 网上有很多时间戳在线转换工具,可以自行计算验证。
|
3天前
|
调度 数据库 UED
Python使用asyncio包实现异步编程方式
异步编程是一种编程范式,用于处理程序中需要等待异步操作完成后才能继续执行的情况。 异步编程允许程序在执行耗时的操作时不被阻塞,而是在等待操作完成时继续执行其他任务。 这对于处理诸如文件 I/O、网络请求、定时器等需要等待的操作非常有用。
|
4天前
|
Ubuntu 编译器 Python
【Python】已解决:安装python-Levenshtein包时遇到的subprocess-exited-with-error问题
【Python】已解决:安装python-Levenshtein包时遇到的subprocess-exited-with-error问题
9 1
|
9天前
|
文字识别 Python
python -m pip ,SyntaxError: invalid syntax,下载需要pip的包
python -m pip ,SyntaxError: invalid syntax,下载需要pip的包
|
8天前
|
Python
Python中字典 直接解包
【7月更文挑战第4天】
16 3
|
8天前
|
Python
python解包字典到函数参数
【7月更文挑战第5天】
9 2
|
8天前
|
Python
Python中字典解包使用*和**操作符
【7月更文挑战第4天】
13 3