主题
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 与命令行交互,我们可以轻松创建强大的命令行工具,使得程序的使用更加灵活、便捷。