接着上一篇
sys 模块
sys 是 Python 标准库中的一个模块,提供了与 Python 解释器和运行时环境交互的功能。通过导入 sys 模块,你可以访问一些与系统相关的变量和函数。下面是 sys 模块中是写POC常用的功能:
1、sys.argv:这是一个包含命令行参数的列表。当你在命令行中执行一个 Python 脚本时,sys.argv 可以让你获取传递给脚本的参数。
import sys
print (sys.argv[0]) #当前程序名
print (sys.argv[1]) #第一个参数
print (sys.argv[2]) #第二个参数
print (sys.argv[3]) #第三个参数
a = len(sys.argv)-1 #参数个数
print (f'参数个数:{a}')
import sys
if len(sys.argv) > 1:
# 第一个参数是脚本本身的文件名
# 之后的参数是传递给脚本的参数
for arg in sys.argv[1:]:
print(arg)
sys.exit([arg]):用于退出 Python 解释器。可选的参数 arg 用于指定退出状态码,默认为 0(表示成功)。
import sys
sys.exit(1) # 以状态码 1 退出
os 模块
Python 的 os 模块提供了一些函数,用于与操作系统进行交互。这个模块包含了很多实用的函数,用于管理文件和目录、获取系统信息、运行命令等。下面是 os 模块中一些常用的函数
os.getcwd():获取当前工作目录。
os.chdir(path):改变当前工作目录。
os.listdir(path):列出指定目录中的文件和子目录。
os.mkdir(path):创建一个目录。
os.makedirs(path):递归地创建目录。
os.rmdir(path):删除一个目录。
os.removedirs(path):递归地删除目录。
os.rename(src, dst):将文件或目录从 src 改名为 dst。
os.remove(path):删除一个文件。
os.path.exists(path):判断路径是否存在。
os.path.abspath(path):获取绝对路径。
os.path.basename(path):获取路径的最后一部分(文件名或目录名)。
os.path.dirname(path):获取路径的目录部分。
os.path.join(path1, path2, ...):将多个路径组合成一个路径。
这些函数可以让我们在 Python 中方便地进行文件和目录的操作,同时也能够获取系统信息,运行命令等
Argparse 模块
argparse是Python标准库中用于解析命令行参数的模块。它可以帮助您定义命令行接口,并解析用户提供的参数。
详细使用手册:argparse 教程 — Python 3.12.3 文档
要使用argparse模块,需要按照以下步骤进行操作:
1. 导入argparse模块:
import argparse
2. 创建一个解析器对象:
parser = argparse.ArgumentParser(description='批量IP去重工具')
在这里,description参数用于提供关于脚本功能的描述。
3. 添加命令行参数:
parser.add_argument('input_file', type=str, help='输入文件名')
parser.add_argument('output_file', type=str, help='输出文件名')
在这里,add_argument方法用于添加命令行参数。每个参数都有一个名称和一个类型。在这个例子中,input_file和output_file都是字符串类型,并且都有一个帮助文本来描述它们的作用。
4. 解析命令行参数:
args = parser.parse_args()
parse_args()方法用于解析命令行参数,并将它们存储在args对象中。在这个例子中,args.input_file和args.output_file将分别保存输入文件名和输出文件名。
通过以上步骤,您就可以使用argparse模块来解析命令行参数了。
add_argument方法是argparse模块中的一个重要方法,用于向解析器对象添加命令行参数。
该方法的语法如下:
parser.add_argument(name or flags, ..., action=None, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None)
下面是对add_argument方法中一些常用参数的解释:
- name or flags:参数的名称或者命令行选项的列表。例如,input_file表示参数的名称,-i或--input表示命令行选项。
- action:参数的动作。默认值为None,表示参数的值将被存储。其他常用的动作包括store_true(如果命令行选项存在,则将参数的值设置为True)和store_false(如果命令行选项存在,则将参数的值设置为False)。
- nargs:参数的数量。默认值为None,表示参数只接受一个值。其他常用的值包括'+'(表示参数接受一个或多个值)和'*'(表示参数接受零个或多个值)。
- const:常量值。默认值为None,表示没有常量值。
- default:参数的默认值。默认值为None。
- type:参数的类型。默认值为None,表示参数的值将被解析为字符串。其他常用的类型包括int(整数)、float(浮点数)和bool(布尔值)。
- choices:参数的可选值列表。默认值为None,表示没有限制。
- required:参数是否是必需的。默认值为False,表示参数是可选的。
- help:参数的帮助文本。默认值为None,表示没有帮助文本。
- metavar:参数的显示名称。默认值为None,表示使用参数的名称作为显示名称。
通过使用add_argument方法,您可以根据需要定义各种类型的命令行参数,并指定它们的动作、数量、默认值、类型、可选值等属性。
使用例子
下面是一些使用add_argument方法的例子:
例子 1:基本用法
parser.add_argument('input_file', type=str, help='输入文件名')
parser.add_argument('output_file', type=str, help='输出文件名')
在这个例子中,我们添加了两个命令行参数:input_file和output_file。这两个参数都是字符串类型,并且都有一个帮助文本来描述它们的作用。
例子 2:使用命令行选项
parser.add_argument('-i', '--input', type=str, help='输入文件名')
parser.add_argument('-o', '--output', type=str, help='输出文件名')
在这个例子中,我们使用了命令行选项来定义参数。-i和--input表示输入文件名,-o和--output表示输出文件名。
例子 3:指定参数的默认值
parser.add_argument('--input', type=str, default='input.txt', help='输入文件名')
parser.add_argument('--output', type=str, default='output.txt', help='输出文件名')
在这个例子中,我们为参数指定了默认值。如果用户没有提供参数的值,将使用默认值。
例子 4:指定参数的类型
parser.add_argument('--count', type=int, help='重试次数')
parser.add_argument('--threshold', type=float, help='阈值')
parser.add_argument('--verbose', type=bool, help='是否显示详细信息')
在这个例子中,我们指定了参数的类型。--count是整数类型,--threshold是浮点数类型,--verbose是布尔类型。
例子 5:指定参数的可选值
parser.add_argument('--mode', type=str, choices=['A', 'B', 'C'], help='模式')
在这个例子中,我们指定了参数的可选值。用户只能选择A、B或C作为参数的值。
这些例子展示了add_argument方法的一些常见用法。您可以根据自己的需求来定义各种类型的命令行参数,并指定它们的动作、数量、默认值、类型、可选值等属性。
使用实例,如下
parser.add_argument('-i', '--input') #指定一个可选参数
parser.add_argument('input_file') #指定一个位置参数
Console 模块
rich 是一个用于在命令行界面(CLI)中美化输出的 Python 库。rich.console.Console 类是 rich 中的一个关键组件,它提供了强大的控制台输出功能,允许你在命令行中创建彩色文本、表格、图形等丰富的内容。
以下是一个简单的示例,展示如何使用 rich.console.Console 类来创建彩色文本输出:
pythonCopy code
from rich.console import Console
def main():
# 创建一个 Console 对象
console = Console()
# 输出彩色文本
console.print("Hello, [bold magenta]Rich[/bold magenta]!", style="bold magenta")
if __name__ == "__main__":
main()