TypeError: 'NoneType' object is not subscriptable 这种错误怎么处理

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

args = parser.parse_args()
assert args.hop == 1, '[ValueWaring]: recommand hop == 1'

bio_dim = int(args.bio_dim)
seed = int(args.seed)  # np.random.randint(0, 100)
print('seed={}'.format(seed))
torch.manual_seed(seed)
random.seed(seed)
np.random.seed(seed)
hop = args.hop  # 1
if args.input[-4:] == '.npz':
    md = np.load(args.input)['data']
elif args.input[-4:] == '.csv':
    md = np.loadtxt(args.input, delimiter=',')
else:
    raise 'Error file extension name!'
运行结果及报错内容

Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/SGNNMD-main/SGNNMD-main/code/main.py", line 244, in
if args.input[-4:] == '.npz':
TypeError: 'NoneType' object is not subscriptable

我的解答思路和尝试过的方法
我想要达到的结果

如有帮助,敬请采纳,你的采纳是我前进的动力,O(∩_∩)O谢谢!!!!!!!!
代码在后面,可复制直接使用。
我猜测:if args.input[-4:] == '.npz':,是想读取numpy矩阵文件,
如果是的话,需要改为if args.input[-4:] == '.npy':,numpy文件后缀是npy格式。

img


import argparse
def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument("--input", type=str, default='文件路径/文件名.后缀呀', help="输入文件路径")
    return parser.parse_args()
args = parse_args()
print(args.input[-4:])
# cmd窗口中运行
# python3 C:/Users/Administrator/Desktop/SGNNMD-main/SGNNMD-main/code/main.py --input=文件路径/文件名.后缀呀

你 args.input 的值是None
应该是 args.命令行参数中input 参数没有赋值,
你检查下在命令行运行程序时是否正确传递了input 参数

最好检查一下 parser 的命令行参数设置,以及调用 python 脚本时的参数。这种情况说明命令行参数中有名为 input 的参数为 None,导致后续问题。

args.input这是啥?报错是因为你这是空值,它不能进行下标取值

1.你 args.input 的值是None,None类型不能通过下标去遍历获取数据,
所以报错TypeError: 'NoneType' object is not subscriptable
2.如果你要获取split_data_0.0.npz,应该把split_data_0.0.npz放在你运行代码同级目录下,
args.input是路径,np.load是根据路径加载npz文件的,你需要确保split_data_0.0.npz可以被读取到

望采纳,谢谢