sys.argv
和 argparse
模块。本文将详细介绍这两种方法,并展示如何在实际脚本中使用它们。
sys.argv
sys.argv
是 Python 内置的一个列表,用于存储从命令行传递给脚本的参数。sys.argv[0]
通常是脚本的名称,从 sys.argv[1]
开始的元素是实际传递的参数。
假设我们要编写一个脚本,该脚本接受两个数字作为参数,并输出它们的和:
import sys
def main():
if len(sys.argv) != 3:
print("Usage: python script.py <number1> <number2>")
sys.exit(1)
try:
num1 = float(sys.argv[1])
num2 = float(sys.argv[2])
except ValueError:
print("Both arguments must be numbers.")
sys.exit(1)
result = num1 + num2
print(f"The sum of {num1} and {num2} is {result}")
if __name__ == "__main__":
main()
python script.py 3 5
The sum of 3.0 and 5.0 is 8.0
优点:
简单直接,适合处理非常简单的参数。
缺点:
缺乏对参数类型和数量的更高级别的验证。
难以处理复杂的参数解析逻辑。
argparse
argparse
是 Python 标准库中的一个模块,用于解析命令行参数。与 sys.argv
相比,argparse
更加灵活和强大,可以轻松处理复杂的参数解析需求。
下面是一个使用 argparse
的脚本,它接受两个数字作为参数,并输出它们的和:
import argparse
def main():
parser = argparse.ArgumentParser(description="Add two numbers.")
parser.add_argument("number1", type=float, help="First number")
parser.add_argument("number2", type=float, help="Second number")
args = parser.parse_args()
result = args.number1 + args.number2
print(f"The sum of {args.number1} and {args.number2} is {result}")
if __name__ == "__main__":
main()
python script.py 3 5
The sum of 3.0 and 5.0 is 8.0
优点:
提供了丰富的参数类型和选项支持。
自动生成帮助和使用信息。
更易处理复杂的参数解析逻辑。
缺点:
对于非常简单的参数解析可能显得有些复杂。
通过本文,我们了解了如何使用 sys.argv
和 argparse
两种方式从命令行接收参数。sys.argv
适用于非常简单的参数解析,而 argparse
则提供了更为强大和灵活的功能,适合处理复杂的命令行参数需求。
无论是选择 sys.argv
还是 argparse