Skip to main content

A utility package for various validation checks

Project description

zyt_validation_utils

PyPI Version License Python Version

zyt_validation_utils 是一个用于数据、文件、目录和文本验证的 Python 工具包。它提供了多种实用的验证函数,帮助开发者快速完成常见的数据检查任务。


功能特性

数据验证:

  • 检查输入的全部元素是否全部为指定类型。
  • 检查列表或元组中的元素是否唯一。
  • 检查输入的全部元素是否都为空。
  • 检查输入的全部元素是否都为数值类型。
  • 检查输入的全部元素是否都为为指定类型数值(如奇数、正整数等)。
  • 检查输入的全部元素是否在指定范围内。
  • 检查输入的全部元素是否为字典的有效键。

目录验证:

  • 检查路径是否为目录。
  • 检查目录是否为空。
  • 检查目录是否包含子目录或非子目录文件。

文件验证:

  • 检查路径是否为文件。
  • 检查文件是否为空文件。
  • 检查文件类型(如音频、视频、图片、压缩文件、bin文件、打包后的软件等)。
  • 检查图片文件是否完整。
  • 检查文件是否加载完整。

文本验证:

  • 检查文本是否全为中文、英文、数字或特殊字符。
  • 检查文本中是否包含中文、英文、数字、特殊字符、空格或空格符。
  • 检查文本中是否包含给定的字符或子字符串。
  • 检查给定的文本是否为有效的邮箱、URL、IP地址(IPV4、IPV6)、MAC地址、日期、
    颜色数、颜色(十六进制格式、RGB格式、RGBA格式)、身份证、手机号、邮编等

安装

使用 pip 安装:

pip install zyt-validation-utils 

API 文档


数据验证

data_check

该模块提供了一系列用于验证数据类型、唯一性、范围及其他属性的函数。以下是各函数的详细说明:


is_type(target_type, *datas)

功能: 检查所有提供的数据是否匹配指定类型。

参数:

  • target_type (type): 目标类型(如 str, int, list 等)。
  • *datas: 不定数量的待检测数据。

返回:

  • bool: 如果所有数据都属于目标类型,返回 True;否则返回 False

is_all_unique(data)

功能: 验证列表或元组的所有元素是否唯一。

参数:

  • data (list 或 tuple): 待检测的列表或元组。

返回:

  • bool: 如果所有元素都唯一,返回 True;否则返回 False

异常:

  • TypeError: 如果输入不是列表或元组。

is_empty(*datas)

功能: 判断提供的数据是否为空。

支持的空值类型:

  • None
  • 空字符串 ("")
  • 空列表 ([])
  • 空字典 ({})
  • 空元组 (())
  • 空集合 (set())

参数:

  • *datas: 不定数量的待检测数据。

返回:

  • bool: 如果所有数据都为空,返回 True;否则返回 False

is_numeric(*datas)

功能: 检查所有提供的数据是否为数字。

参数:

  • *datas: 不定数量的待检测数据。

返回:

  • bool: 如果所有数据都是数值类型(intfloat),返回 True;否则返回 False

is_designated_nums(num_type, *datas)

功能: 验证所有数据是否为指定的数字类型。

支持的指定类型:

  • "odd": 奇数
  • "even": 偶数
  • "positive": 正数
  • "non_negative": 非负数
  • "negative": 负数
  • "int": 整数(可与其他类型组合使用)

参数:

  • num_type (str): 指定的数字类型。
  • *datas: 不定数量的待检测数据。

返回:

  • bool: 如果所有数据都符合指定类型,返回 True;否则返回 False

异常:

  • ValueError: 如果指定类型不支持。

is_nums_in_range(range_str, must_int=False, *datas)

功能: 确保所有数字都在指定范围内。

参数:

  • range_str (str): 数据范围字符串,格式为 (a, b)[a, b](a, ][a, )(, b)[, b] 等。
  • must_int (bool, 可选): 是否必须为整数。默认为 False
  • *datas: 不定数量的待检测数据。

返回:

  • bool: 如果所有数据都在指定范围内,返回 True;否则返回 False

异常:

  • ValueError: 如果范围字符串格式错误或数据不是有效数字。

is_valid_key(dictionary, *datas)

功能: 确认所有数据是否为字典中的有效键。

参数:

  • dictionary (dict): 目标字典。
  • *datas: 不定数量的待检测数据。

返回:

  • bool: 如果所有数据都是字典的有效键,返回 True;否则返回 False

使用示例

from zyt_validation_utils.data_check import is_type, is_all_unique, is_empty, is_numeric, is_designated_nums, is_nums_in_range, is_valid_key

# 检查数据类型
if is_type(int, 1, 2, 3):
    print("所有数据都是整数")

# 检查列表元素是否唯一
if is_all_unique([1, 2, 3, 4]):
    print("列表元素唯一")

# 检查数据是否为空
if is_empty("", [], {}):
    print("所有数据都为空")

# 检查数据是否为数字
if is_numeric(1, 2.5, 3):
    print("所有数据都是数字")

# 检查数据是否为指定类型(如正数)
if is_designated_nums("positive", 1, 2, 3):
    print("所有数据都是正数")

# 检查数据是否在指定范围内
if is_nums_in_range("[1, 10]", False, 2, 3, 4):
    print("所有数据都在范围内")

# 检查数据是否为字典的有效键
if is_valid_key({"a": 1, "b": 2}, "a", "b"):
    print("所有数据都是字典的有效键")

目录验证

dir_check

该模块提供了一系列用于验证目录是否存在、是否为空、是否包含子目录或文件等功能的函数。以下是各函数的详细说明:


is_dir(path, raise_error=True)

功能: 检查路径是否为目录。

参数:

  • path (str): 目录路径。
  • raise_error (bool, 可选): 如果为 True,当路径不存在或不是目录时抛出异常;如果为 False,则返回 False。默认为 True

返回:

  • bool: 如果路径是目录,返回 True;否则返回 False

异常:

  • FileNotFoundError: 如果路径不存在且 raise_errorTrue

is_dir_empty(dir_path)

功能: 判断目录是否为空。

参数:

  • dir_path (str): 目录路径。

返回:

  • bool: 如果目录为空,返回 True;否则返回 False

is_have_subdirectories(dir_path)

功能: 检查目录是否包含子目录。

参数:

  • dir_path (str): 目录路径。

返回:

  • bool: 如果目录包含子目录,返回 True;否则返回 False

is_have_non_subdirectory_files(dir_path)

功能: 验证目录中是否包含非子目录的文件。

参数:

  • dir_path (str): 目录路径。

返回:

  • bool: 如果目录中包含非子目录的文件,返回 True;否则返回 False

使用示例

from zyt_validation_utils.dir_check import is_dir, is_dir_empty, is_have_subdirectories, is_have_non_subdirectory_files

# 检查路径是否为目录
if is_dir("/path/to/directory"):
    print("路径是目录")

# 检查目录是否为空
if is_dir_empty("/path/to/directory"):
    print("目录为空")

# 检查目录是否包含子目录
if is_have_subdirectories("/path/to/directory"):
    print("目录包含子目录")

# 检查目录中是否包含非子目录的文件
if is_have_non_subdirectory_files("/path/to/directory"):
    print("目录中包含非子目录的文件")

文件验证模块 file_check

该模块提供了一系列用于验证文件类型、完整性及其他属性的函数。以下是各函数的详细说明:


is_file(path, raise_error=True)

功能: 检查指定路径是否为文件。

参数:

  • path (str): 文件路径。
  • raise_error (bool, 可选): 如果为 True,当路径不存在或不是文件时抛出异常;如果为 False,则返回 False。默认为 True

返回:

  • bool: 如果路径是文件,返回 True;否则返回 False

异常:

  • FileNotFoundError: 如果路径不存在且 raise_errorTrue

is_empty_file(file_path)

功能: 判断文件是否为空文件。

参数:

  • file_path (str): 文件路径。

返回:

  • bool: 如果文件大小为 0,返回 True;否则返回 False

is_image(file_path, speed="normal", raise_error=True)

功能: 验证文件是否为图片文件。

参数:

  • file_path (str): 文件路径。
  • speed (str, 可选): 检测模式,可选值为 'fast''normal'。默认为 'normal'
    • 'fast': 仅通过文件后缀名快速判断。
    • 'normal': 使用 filetype 库进行更准确的判断。
  • raise_error (bool, 可选): 如果为 True,当检测失败时抛出异常;如果为 False,则返回 False。默认为 True

返回:

  • bool: 如果文件是图片文件,返回 True;否则返回 False

异常:

  • ValueError: 如果检测失败且 raise_errorTrue

is_image_complete(image_path, speed="normal", raise_error=True)

功能: 检查图片文件是否完整。

参数:

  • image_path (str): 文件路径。
  • speed (str, 可选): 检测模式,可选值为 'fast''normal''strict'。默认为 'normal'
    • 'fast': 仅检查文件大小和文件头。
    • 'normal': 检查文件大小、文件头和图像结构。
    • 'strict': 检查文件大小、文件头、图像结构和像素数据。
  • raise_error (bool, 可选): 如果为 True,当检测失败时抛出异常;如果为 False,则返回 False。默认为 True

返回:

  • bool: 如果图片文件完整,返回 True;否则返回 False

异常:

  • ValueError: 如果检测失败且 raise_errorTrue

is_video(file_path, speed="normal", raise_error=True)

功能: 验证文件是否为视频文件。

参数:

  • file_path (str): 文件路径。
  • speed (str, 可选): 检测模式,可选值为 'fast''normal'。默认为 'normal'
    • 'fast': 仅通过文件后缀名快速判断。
    • 'normal': 使用 filetype 库进行更准确的判断。
  • raise_error (bool, 可选): 如果为 True,当检测失败时抛出异常;如果为 False,则返回 False。默认为 True

返回:

  • bool: 如果文件是视频文件,返回 True;否则返回 False

异常:

  • ValueError: 如果检测失败且 raise_errorTrue

is_audio(file_path, speed="normal", raise_error=True)

功能: 验证文件是否为音频文件。

参数:

  • file_path (str): 文件路径。
  • speed (str, 可选): 检测模式,可选值为 'fast''normal'。默认为 'normal'
    • 'fast': 仅通过文件后缀名快速判断。
    • 'normal': 使用 filetype 库进行更准确的判断。
  • raise_error (bool, 可选): 如果为 True,当检测失败时抛出异常;如果为 False,则返回 False。默认为 True

返回:

  • bool: 如果文件是音频文件,返回 True;否则返回 False

异常:

  • ValueError: 如果检测失败且 raise_errorTrue

is_archive(file_path, speed="normal", raise_error=True)

功能: 验证文件是否为压缩文件。

参数:

  • file_path (str): 文件路径。
  • speed (str, 可选): 检测模式,可选值为 'fast''normal'。默认为 'normal'
    • 'fast': 仅通过文件后缀名快速判断。
    • 'normal': 使用 filetype 库进行更准确的判断。
  • raise_error (bool, 可选): 如果为 True,当检测失败时抛出异常;如果为 False,则返回 False。默认为 True

返回:

  • bool: 如果文件是压缩文件,返回 True;否则返回 False

异常:

  • ValueError: 如果检测失败且 raise_errorTrue

is_bin(file_path, speed="normal", raise_error=True)

功能: 验证文件是否为二进制 .bin 文件。

参数:

  • file_path (str): 文件路径。
  • speed (str, 可选): 检测模式,可选值为 'fast''normal'。默认为 'normal'
    • 'fast': 仅通过文件后缀名快速判断。
    • 'normal': 读取文件内容并检查是否包含二进制数据。
  • raise_error (bool, 可选): 如果为 True,当检测失败时抛出异常;如果为 False,则返回 False。默认为 True

返回:

  • bool: 如果文件是二进制 .bin 文件,返回 True;否则返回 False

异常:

  • ValueError: 如果检测失败且 raise_errorTrue

is_current_file_frozen()

功能: 判断当前程序是否是打包后的可执行文件。

返回:

  • bool: 如果当前程序是打包后的可执行文件,返回 True;否则返回 False

is_file_load_complete(file_path, timeout=60, raise_error=True)

功能: 检查文件是否在指定时间内完全加载(通常用于检测文件是否复制完成)。

参数:

  • file_path (str): 文件路径。
  • timeout (int, 可选): 最大等待时间(秒)。默认为 60 秒。
  • raise_error (bool, 可选): 如果为 True,当文件不存在或不是文件时抛出异常;如果为 False,则返回 False。默认为 True

返回:

  • bool: 如果文件在超时时间内完全加载,返回 True;否则返回 False

异常:

  • ValueError: 如果文件不存在或不是文件且 raise_errorTrue

使用示例

from zyt_validation_utils.file_check import is_file, is_image, is_image_complete, is_file_load_complete

# 检查是否为文件
try:
    if is_file("path", raise_error=True):
        print("是文件格式")
    else:
        print("不是文件格式")
except FileNotFoundError:
    print(f"path不存在")

# 检查文件是否为图片
try:
    if is_file("example.jpg", raise_error=False):
        if is_image("example.jpg", speed="fast", raise_error=True):
            print("文件是图片")
        else:
            print("文件不是图片")
    else:
      print("不是文件或地址不存在")
except ValueError:
    raise 

# 检查图片文件是否完整
if is_image_complete("example.jpg", speed="strict", raise_error=False):
    print("图片文件完整")

if is_file_load_complete("example.jpg", timeout=120, raise_error=False):
    print("图片已加载完成")

文本验证

text_check

该模块提供了一系列用于验证文本内容、格式及其他属性的函数。以下是各函数的详细说明:


is_have_chinese(text)

功能: 判断字符串是否含有中文字符。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果字符串含有中文字符,返回 True;否则返回 False

is_all_chinese(text)

功能: 判断字符串是否全部由中文字符组成。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果字符串全部由中文字符组成,返回 True;否则返回 False

is_have_english(text)

功能: 判断字符串是否含有英文字符。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果字符串含有英文字符,返回 True;否则返回 False

is_all_english(text)

功能: 判断字符串是否全部由英文字符组成。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果字符串全部由英文字符组成,返回 True;否则返回 False

is_have_digit(text)

功能: 判断字符串是否含有数字。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果字符串含有数字,返回 True;否则返回 False

is_all_digit(text)

功能: 判断字符串是否全部由数字组成。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果字符串全部由数字组成,返回 True;否则返回 False

is_have_special_char(text)

功能: 判断字符串是否含有特殊字符(非字母、非数字、非中文)。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果字符串含有特殊字符,返回 True;否则返回 False

is_all_special_char(text)

功能: 判断字符串是否全部由特殊字符组成(非字母、非数字、非中文)。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果字符串全部由特殊字符组成,返回 True;否则返回 False

is_have_normal_space(text)

功能: 判断字符串是否含有空格字符。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果字符串含有空格字符,返回 True;否则返回 False

is_have_any_space(text)

功能: 判断字符串是否含有空白字符(包括空格、制表符、换行符等)。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果字符串含有空白字符,返回 True;否则返回 False

is_have(text, check)

功能: 判断字符串中是否包含给定的字符或子字符串。

参数:

  • text (str): 输入的文本。
  • check: 需要检查的字符、子字符串或判断函数。可以是单个字符、字符串、列表、集合或元组。

返回:

  • bool: 如果包含给定的字符或子字符串,返回 True;否则返回 False

is_email(text)

功能: 判断字符串是否为有效邮箱地址。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果是有效邮箱地址,返回 True;否则返回 False

is_url(text)

功能: 判断字符串是否为有效 URL。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果是有效的 URL,返回 True;否则返回 False

is_ipv4_address(text)

功能: 判断字符串是否为有效 IPv4 地址。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果是有效的 IPv4 地址,返回 True;否则返回 False

is_ipv6_address(text)

功能: 判断字符串是否为有效 IPv6 地址。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果是有效的 IPv6 地址,返回 True;否则返回 False

is_ip_address(text)

功能: 判断字符串是否为有效 IP 地址(支持 IPv4 和 IPv6)。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果是有效的 IP 地址,返回 True;否则返回 False

is_mac_address(text)

功能: 判断字符串是否为有效 MAC 地址。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果是有效的 MAC 地址,返回 True;否则返回 False

is_date(text, separator='-')

功能: 判断字符串是否为有效日期(支持多种分隔符)。

参数:

  • text (str): 输入的文本。
  • separator (str, 可选): 日期分隔符,默认为 '-'

返回:

  • bool: 如果是有效日期,返回 True;否则返回 False

is_color_num(text)

功能: 判断输入是否为颜色编码数字(0-255)。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果是有效颜色编码数字,返回 True;否则返回 False

is_hex_color(text)

功能: 判断输入是否为有效的十六进制颜色代码。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果是有效的十六进制颜色代码,返回 True;否则返回 False

is_rgb_color(text)

功能: 判断输入是否为有效的 RGB 颜色格式。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果是有效的 RGB 颜色格式,返回 True;否则返回 False

is_rgba_color(text)

功能: 判断输入是否为有效的 RGBA 颜色格式(支持透明度为 0-1 或 0-255)。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果是有效的 RGBA 颜色格式,返回 True;否则返回 False

is_color(text)

功能: 判断输入是否为有效的颜色格式(支持十六进制、RGB、RGBA)。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果是有效的颜色格式,返回 True;否则返回 False

is_Chinese_id_card(text, allow_lower_x=False)

功能: 判断字符串是否为有效中国身份证号。

参数:

  • text (str): 输入的文本。
  • allow_lower_x (bool, 可选): 是否允许小写 x,默认为 False

返回:

  • bool: 如果是有效身份证号,返回 True;否则返回 False

is_Chinese_mobile_phone_number(text)

功能: 判断字符串是否为有效中国手机号。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果是有效手机号,返回 True;否则返回 False

is_Chinese_postal_code(text)

功能: 判断字符串是否为有效中国邮政编码。

参数:

  • text (str): 输入的文本。

返回:

  • bool: 如果是有效邮政编码,返回 True;否则返回 False

使用示例

from zyt_validation_utils.text_check import is_have_chinese, is_have, is_email, is_ipv4_address, is_date, is_Chinese_id_card

# 检查字符串是否含有中文字符
if is_have_chinese("你好,世界"):
    print("字符串含有中文字符")

# 检查字符串是否满足所给条件
if is_have("spring is on the horizon", ["spring","summer", "autumn", "winter"]):
    print("字符串在所给条件中")

# 检查字符串是否为有效邮箱地址
if is_email("example@example.com"):
    print("字符串是有效邮箱地址")

# 检查字符串是否为有效 IPv4 地址
if is_ipv4_address("192.168.1.1"):
    print("字符串是有效 IPv4 地址")
    
# 检查字符串是否为有效日期
if is_date("2025.01.27", separator='.'):
    print("字符串是有效日期")

# 检查字符串是否为有效中国身份证号
if is_Chinese_id_card("11010519491231002x", allow_lower_x=True):
    print("字符串是有效中国身份证号")

贡献

欢迎贡献代码!

许可证

本项目基于 MIT 许可证 开源。

作者

致谢

感谢所有为这个项目做出贡献的人!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zyt_validation_utils-0.2.2.tar.gz (20.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zyt_validation_utils-0.2.2-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file zyt_validation_utils-0.2.2.tar.gz.

File metadata

  • Download URL: zyt_validation_utils-0.2.2.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for zyt_validation_utils-0.2.2.tar.gz
Algorithm Hash digest
SHA256 ca1b05b948a968d50b49cade4424286eded06a10a386dfe52f2512b3af564bae
MD5 84238045fc6f0ed1c47b91a055374317
BLAKE2b-256 188f97fb74dc4d57f0117215de0ba389d7b5dd5adcfcf02f09310f5047031fdc

See more details on using hashes here.

File details

Details for the file zyt_validation_utils-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for zyt_validation_utils-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0d758734e40b66ce0c9c83323ff860fc2d45ff695c49aac89defc335a48aa45b
MD5 d482a609b5d3484d3bf25d4de5ea178b
BLAKE2b-256 2f085e2089a2b32a542d015fadb17260d65f16c497b1c9e0502598be8d01e5f7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page