Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python f2=sys.argv[1]indexer错误:尝试从bash文件获取参数时,列表索引超出范围_Python_Bash - Fatal编程技术网

Python f2=sys.argv[1]indexer错误:尝试从bash文件获取参数时,列表索引超出范围

Python f2=sys.argv[1]indexer错误:尝试从bash文件获取参数时,列表索引超出范围,python,bash,Python,Bash,我正在尝试一个小项目,通过使用bash文件和python读取简单的csv文件 argv[1]的列表索引超出范围错误 main.py 如果$f包含可以由BASH以某种方式解释的额外字符,例如&和| |,则可能发生这种情况。无论如何,最好使用./main.py$f,因此$f被解释为单个参数 以这个例子为例 f="echo hello" echo $f 这将生成:echo hello但不是hello,因为$f被解释为参数 也许您的python文件必须以开头/usr/bin/python 它还抛出错误

我正在尝试一个小项目,通过使用bash文件和python读取简单的csv文件

argv[1]的列表索引超出范围错误

main.py

如果$f包含可以由BASH以某种方式解释的额外字符,例如&和| |,则可能发生这种情况。无论如何,最好使用./main.py$f,因此$f被解释为单个参数

以这个例子为例

f="echo hello"
echo $f

这将生成:echo hello但不是hello,因为$f被解释为参数

也许您的python文件必须以开头/usr/bin/python 它还抛出错误NameError:未定义名称“reader”,因为for循环不在主函数内。
在将其移动到主函数内部后,您的代码将工作。

如何运行上述文件?是的,当然是pyton3.4.2中的上述代码,您可以选择在Python中循环输入文件。@rbp我检查了一下,发现它不是传递参数,我不知道为什么不是passing@rbp我明白你的意思,并检查了数组长度的代码。我可以得到argv[0],但argv[1]传递参数时出现了一些问题。我用python 3.4在windows上运行,所以bash文件对于windows和linux是一样的?所有的代码都可以用python解释。我甚至试过这个/usr/bin/env bash chmod+x./main.py for f=hello printf%-28s$f./main.py$f没有work@user3600866,run./main.py$fnope其不工作仍然显示与在中工作相同的错误machine@user3600866,你的文件名是什么?@user3600866,对不起,我是说,你的csv文件名是什么?它是否包含我在回答中提到的任何不寻常的字符?
#!/usr/bin/env bash
chmod +x ./main.py
for f in ./sample_data/*.csv  

do
printf "%-28s" $f
./main.py $f
done
f="echo hello"
echo $f