Python如何在终端运行脚本时直接传入整数参数
命令行传入整数参数实现方案
方案1:轻量实现(无额外依赖,适合单参数场景)
直接用Python标准库自带的sys模块读取启动参数,不需要安装任何第三方包,是最简单的实现方式。sys.argv会按顺序存储启动命令里的所有内容,所有值默认均为字符串类型:
- 索引0固定是当前运行的脚本文件名
- 索引1开始就是命令后跟随的传入参数
示例代码(保存为code.py):
import sys if __name__ == "__main__": # 校验是否传入参数 if len(sys.argv) < 2: print("调用格式错误,正确用法:python code.py <整数参数>") sys.exit(1) # 把传入的字符串参数转成整数,加异常捕获避免传非整数内容报错 try: target_num = int(sys.argv[1]) except ValueError: print("参数错误:传入的值必须是整数") sys.exit(1) # --------------- # 这里写你原本的业务逻辑,直接使用target_num即可 print(f"已读取传入的整数:{target_num}") # ---------------
写完后直接在终端执行python code.py 4就能直接把4作为参数传入脚本,不需要进入交互输入环节。
批量运行的时候可以直接配合终端循环实现自动传参,比如bash环境下执行:
for i in {1..10}; do python code.py $i; done
就能自动依次传入1到10批量运行10次,完全不需要手动交互输入。
方案2:规范实现(适合多参数场景,自带校验和帮助文档)
如果后续需要扩展更多参数,推荐用Python标准库自带的argparse模块,它会自动完成参数类型校验、帮助文档生成,不需要自己写冗余的判断逻辑。
示例代码(保存为code.py):
import argparse if __name__ == "__main__": # 初始化参数解析器 parser = argparse.ArgumentParser(description="接收整数参数运行的脚本") # 定义需要接收的整数参数 parser.add_argument("num", type=int, help="需要传入的整数值") # 读取解析参数 args = parser.parse_args() target_num = args.num # --------------- # 这里写你原本的业务逻辑,直接使用target_num即可 print(f"已读取传入的整数:{target_num}") # ---------------
这个方案的优势:
- 自动做类型校验,传入非整数时会输出清晰的错误提示
- 执行
python code.py -h会自动生成标准化的用法帮助文档 - 后续扩展可选参数、多参数的时候不需要重构参数读取逻辑
注意事项
- 命令行读取到的参数默认都是字符串格式,必须显式转换为
int类型后再做数值计算,否则会触发类型错误 - 两种方案均使用Python标准库实现,不需要安装任何第三方包,兼容所有Python3版本
内容的提问来源于stack exchange,提问作者Ele
相关产品推荐
相关产品推荐

