【发布时间】:2019-04-07 17:24:54
【问题描述】:
我收到一个错误:
'IndexError: list index out of range' 用于 sys.argv[1] 命令。
我知道 sys.argv[0] 会给我我的文件的名称,并且在这个 if-elif-else 条件循环中,它清楚地将自己路由到 else,这在我当前的应用程序中是不可取的。
if sys.argv[1] == "train.txt":
print_data(e2e_train_src, e2e_train_tgt)
elif sys.argv[1] == "valid.txt":
print_data(e2e_val_src, e2e_val_tgt)
else:
assert False
我希望数据能够打印出来,但事实并非如此。
【问题讨论】:
-
在我看来,您的“elif”应该检查 sys.argv[1] 而不是 sys.argv[0],对吗?
-
您说您知道
sys.argv[0]将是源文件的名称,但在第二种情况下您仍然在检查它。你在测试的时候,有没有通过“valid.txt”? -
"它清楚地将自己路由到 else" 但是你得到一个索引错误,从这个意义上说它是如何“清晰”的?也许您想先检查
sys.argv的长度? (例如if len(sys.argv) > 1 and sys.argv[1] == ...) -
如果你得到一个
IndexError,那么你的程序调用不会在命令行上指定train.txt或valid.txt。你在输入python myprog.py train.txt吗?
标签: python python-3.x