[英]IndexError: list index out of range: sys.argv[1] out of range
[英]f2=sys.argv[1] IndexError: list index out of range while trying to get argument from bash file
我正在尝试一个小项目,不幸的是,使用bash文件和python读取简单的csv文件
argv [1]的列表索引超出范围错误
main.py
import sys
import csv
def main(file_name):
fp = open(file_name)
reader = csv.reader(fp)
points = []
for row in reader:
x = row[0]
y = row[1]
print(y)
if __name__ == "__main__":
if len(sys.argv) > 0:
file_name = sys.argv[1]
main(file_name)
else:
print "<filename> must be the first argument"
#BAsh文件
#!/usr/bin/env bash
chmod +x ./main.py
for f in ./sample_data/*.csv
do
printf "%-28s" $f
./main.py $f
done
如果$f
包含BASH可以解释的“多余”字符,例如&
和||
,可能会发生这种情况。 。 无论如何,最好使用./main.py "$f"
因此$f
被解释为单个参数。
考虑这个例子
f="echo hello"
echo $f
产生: echo hello
但不是hello
因为$f
被解释为参数。
也许您的python文件必须以#!/usr/bin/python
开头#!/usr/bin/python
它还会引发错误NameError: name 'reader' is not defined
因为您的for循环不在主函数内。 将其移至主要功能内部后,您的代码即可工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.