python | argparse模块在命令行的使用中的重要作用
import argparseclass TestCases:def __init__(self, name=None, expect_result=None):self.name = nameself.expect = expect_resultself.parser = argparse.ArgumentParser() # 创建命令解析器self.add_arguments() # 方法 : 添加命令self.args, _ = self.parser.parse_known_args() # 解析命令行中的参数self.server_ip = self.args.ServerIPself.server_port = self.args.ServerPortself.device_ip = self.args.DeviceIPself.device_id = self.args.DeviceIDself.device_slot = self.args.DeviceSlotself.service_name = self.args.ServiceNamedef add_arguments(self):# 添加命令行参数self.parser.add_argument('--ServerIP', type=str, help='Server IP Address')self.parser.add_argument('--ServerPort', type=int, help='Server Port')self.parser.add_argument('--DeviceIP', type=str, help='Device IP Address')self.parser.add_argument('--DeviceID', type=str, help='Device ID')self.parser.add_argument('--DeviceSlot', type=str, help='Device Slot ID')self.parser.add_argument('--ServiceName', type=str, help='Service Name')# 创建 TestCases 类的实例,并使用新的命令行参数
test_case = TestCases(name="Test Case 1", expect_result="Success")# 打印实例的属性,查看是否正确初始化
print(f"Name: {test_case.name}")
print(f"Expected Result: {test_case.expect}")
print(f"Server IP: {test_case.server_ip}")
print(f"Server Port: {test_case.server_port}")
print(f"Device IP: {test_case.device_ip}")
print(f"Device ID: {test_case.device_id}")
print(f"Device Slot: {test_case.device_slot}")
print(f"Service Name: {test_case.service_name}")
在这个示例中,我们首先定义了 TestCases 类,然后在类中添加了一个 add_arguments 方法来定义命令行参数。
接着,我们创建了一个 TestCases 类的实例 test_case,并传入了 name 和 expect_result 参数。请注意,要使这段代码正常工作,你需要从命令行运行脚本并提供相应的参数。如果你不提供参数,self.address 等属性将被设置为 None。
- 直接运行的结果
最后,我们打印出实例的各个属性,以验证它们是否被正确初始化。 请注意,这个示例假设所有命令行参数都是通过环境变量或在命令行中直接提供,因为
parse_known_args() 方法需要实际的命令行参数来进行解析
。
右键直接运行的结果
D:\SoftWare\ana\python.exe D:/PythonProject/learnTest/args2.py
Name: Test Case 1
Expected Result: Success
Server IP: None
Server Port: None
Device IP: None
Device ID: None
Device Slot: None
Service Name: None
命令行参数运行的结果:
创建 TestCases 类的实例,需要通过命令行传递参数
python args2.py \
--ServerIP 192.168.1.1 \
--ServerPort 8080 \
--DeviceIP 10.0.0.1 \
--DeviceID CHASSIS1 \
--DeviceSlot SLOT1 \
--ServiceName INSTANCE1Name: Test Case 1
Expected Result: Success
ServerIP 192.168.1.1
ServerPort 8080
DeviceIP 10.0.0.1
DeviceID CHASSIS1
DeviceSlot SLOT1
ServiceName INSTANCE1