教程 python tutorial

Python 与命令行交互

Python 提供了多种与命令行交互的方法,可以用于获取用户输入、处理命令行参数以及创建命令行工具。本章将介绍常见的与命令行交互的技巧,包括 input() 函数、argparse 模块以及如何编写脚本来接受命令行参数。

使用 input() 获取用户输入

Python 的 input() 函数用于从命令行读取用户输入。此函数会暂停程序的执行,等待用户输入数据并按下回车键,然后将输入的内容作为字符串返回。

示例:获取用户输入

python
name = input("请输入你的名字: ")
print(f"你好,{name}!")

运行该脚本时,程序会提示用户输入名字,然后输出个性化的问候语。

注意

  • input() 函数总是返回字符串类型,如果需要将输入转换为其他类型(如整数或浮点数),需要使用 int() 或 float() 函数进行转换。
python
age = int(input("请输入你的年龄: "))
print(f"你的年龄是: {age}岁")

使用 argparse 处理命令行参数

argparse 模块是 Python 标准库中处理命令行参数的强大工具。它可以帮助我们从命令行读取参数、生成帮助信息,并自动进行类型转换和参数验证。

示例:使用 argparse 解析命令行参数

python
import argparse

# 创建解析器对象
parser = argparse.ArgumentParser(description="一个示例命令行工具")

# 添加命令行参数
parser.add_argument("name", help="你的名字")
parser.add_argument("age", type=int, help="你的年龄")

# 解析命令行参数
args = parser.parse_args()

# 打印结果
print(f"你好,{args.name}!你的年龄是:{args.age}岁")

运行命令行工具

代码
python script.py Alice 30

输出:

代码
你好,Alice!你的年龄是:30岁

在这个示例中,argparse 模块定义了两个命令行参数:name 和 age。argparse 会自动处理参数的解析,并将其作为属性添加到返回的 args 对象中。

可选参数与默认值

argparse 还支持可选参数,并允许为这些参数指定默认值。通过使用 -- 前缀,我们可以定义可选的命令行参数。

示例:使用可选参数

python
import argparse

# 创建解析器对象
parser = argparse.ArgumentParser(description="一个带有可选参数的命令行工具")

# 添加可选参数
parser.add_argument("--greeting", default="Hello", help="问候语")

# 解析命令行参数
args = parser.parse_args()

# 打印结果
print(f"{args.greeting}, Python!")

运行命令行工具

代码
python script.py --greeting "Hi"

输出:

代码
Hi, Python!

如果不指定 --greeting 参数,则会使用默认值 Hello。

处理命令行错误

当命令行参数格式不正确时,argparse 会自动生成错误信息并显示给用户。我们还可以自定义错误处理逻辑。

示例:处理缺失参数

python
import argparse

# 创建解析器对象
parser = argparse.ArgumentParser(description="示例命令行工具,缺少参数时抛出错误")

# 添加参数
parser.add_argument("name", help="你的名字")

try:
    # 解析命令行参数
    args = parser.parse_args()
    print(f"你好,{args.name}!")
except SystemExit as e:
    print("命令行参数错误,程序退出")

如果运行时缺少必需的参数,argparse 会自动显示错误信息,并退出程序。

编写命令行工具

Python 还允许我们将命令行工具打包为脚本,可以通过在终端直接调用它来执行。

示例:创建可执行的 Python 脚本

bash
#!/usr/bin/env python3
import argparse

def main():
    parser = argparse.ArgumentParser(description="命令行工具示例")
    parser.add_argument("action", choices=["greet", "bye"], help="选择动作")
    args = parser.parse_args()

    if args.action == "greet":
        print("你好,世界!")
    elif args.action == "bye":
        print("再见,世界!")

if __name__ == "__main__":
    main()

设置执行权限

在 Linux 或 macOS 上,可以通过以下命令将 Python 文件设置为可执行文件:

bash
chmod +x script.py

之后,可以直接通过命令行运行:

bash
./script.py greet

总结

  • input() 函数用于获取用户输入,适合简单的交互。
  • argparse 模块用于解析命令行参数,适合创建功能丰富的命令行工具。
  • argparse 支持必选参数、可选参数、默认值及错误处理。
  • 可以通过创建可执行脚本来方便地部署命令行工具,提升自动化和便捷性。

通过使用 Python 与命令行交互,我们可以轻松创建强大的命令行工具,使得程序的使用更加灵活、便捷。