当我们在命令行中执行Python程序时,可以通过获得命令行输入的参数来控制程序的行为。以下是Python获得命令行输入的参数的两种方式:
方式一:sys模块
Python中的sys模块为我们提供了一个名为sys.argv的列表,其中包含了从命令行中获得的所有参数。该列表的第一个元素是脚本名称本身,而剩余的元素则是按顺序排列的位置参数。下面是使用sys模块获得命令行输入参数的示例代码:
import sys
print("脚本名称: ", sys.argv[0])
print("参数列表: ", str(sys.argv[1:]))
在这个示例中,我们首先导入sys模块,然后使用sys.argv访问所有从命令行传递的参数。sys.argv[0]
返回该脚本的名称,sys.argv[1:]
返回所有其他参数的列表。执行该脚本并传递三个参数的效果如下:
$ python test.py arg1 arg2 arg3
脚本名称: test.py
参数列表: ['arg1', 'arg2', 'arg3']
方式二:argparse模块
使用argparse模块处理命令行参数可以更方便,它有着更友好的用户交互体验和更高效的传参方式。argparse模块使得在命令行中指定和解析你的Python脚本参数变得非常容易。具体操作步骤如下:
- 导入argparse模块,创建argparse.ArgumentParser对象
- 使用add_argument()向ArgumentParser对象中添加参数
- 使用parse_args()方法去解析命令行参数
下面是使用argparse模块获得命令行输入参数的示例代码:
import argparse
parser = argparse.ArgumentParser(description='命令行参数解析示例')
parser.add_argument('filename', metavar='FILE', help='输入文件')
parser.add_argument('--append', '-a', action='store_true', help='以附加模式打开文件')
parser.add_argument('-v', '--verbose', action='count', default=0, help='详细模式,可提高日志级别')
args = parser.parse_args()
print("输入文件: ", args.filename)
print("附加模式: ", args.append)
print("详细模式: ", args.verbose)
在这个示例中,我们首先导入argparse模块,然后创建一个ArgumentParser对象。parser.add_argument()
方法用于向该对象添加参数。在这个示例中,我们添加了三个参数:filename、--append和-v/--verbose。每个参数都有一个metavar,例如在filename参数中,它的metavar为“FILE”。这样可以在打印help信息时获得更好的展示效果。action属性用于定义参数被发现时执行的操作。例如,当-a参数被找到时,我们希望以附加模式打开文件。store_true表示如果-a存在则附加模式为True,否则为False。count属性用于记录参数被发现的次数。
最后,我们使用解析器的parse_args()方法解析命令行参数。执行该脚本并传递参数的效果如下:
$ python test.py myfile.txt --append -vvv
输入文件: myfile.txt
附加模式: True
详细模式: 3
在执行命令时传递参数myfile.txt
作为输入文件名,--append
表示以附加模式打开文件,-vvv
表示verbose模式,提高日志级别3次。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python获得命令行输入的参数的两种方式 - Python技术站