You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用argparse传参时遇TypeError:'int'对象不可下标访问

解决argparse参数传递导致的TypeError问题

我来帮你排查这个问题,你遇到的TypeError: 'int' object is not subscriptable主要是因为argparse参数传递的格式错误,还有一些小细节需要调整,具体来看:

错误根源分析

  1. 缺少参数选项标识:你直接把参数值传入parse_args,但argparse需要明确的选项前缀(比如-i、-p、-s)来识别每个值对应的参数,否则它会把这些值当成未定义的位置参数,导致内部处理出错。
  2. 传入非字符串参数:命令行参数本质都是字符串,parse_args只接受字符串列表,你传入的整数3会干扰argparse的解析流程,引发类型错误。
  3. 坐标格式冗余:你传的(144,72)带括号,后续解析坐标时还要额外处理括号,不如直接传144,72更方便。

修正后的完整代码

import argparse

ap = argparse.ArgumentParser() 
ap.add_argument("-i", "--image", help="Path to input image", required=True) 
ap.add_argument("-p", "--pivot-point", help="Pivot point coordinates x, y separated by comma (,)", required=True) 
ap.add_argument("-s", "--scale", help="Scale to zoom", type=int, required=True) 

# 修正parse_args的参数格式:带选项前缀,全部用字符串
args = vars(ap.parse_args(['-i', 'image.jpeg', '-p', '144,72', '-s', '3']))

# 解析支点坐标为整数元组
pivot_x, pivot_y = map(int, args['pivot_point'].split(','))
pivot_point = (pivot_x, pivot_y)

# 打印验证参数
print(f"Image path: {args['image']}")
print(f"Pivot point: {pivot_point}")
print(f"Scale: {args['scale']}")

关键调整说明

  • 参数列表格式:给每个参数加上对应的选项(-i对应图片路径,-p对应支点坐标,-s对应缩放比例),所有值都用字符串传递,argparse会自动把scale的字符串转成整数。
  • 坐标解析:通过split(',')分割坐标字符串,再用map(int, ...)转成整数,得到可用的支点坐标元组。

这样运行代码就不会再出现类型错误了,之后你就可以用这些参数来实现图像的支点缩放功能啦。

内容的提问来源于stack exchange,提问作者Gagan GM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:17:54