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格式。
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可以被读取到
望采纳,谢谢