从shell脚本执行python脚本(具有参数)
myfile.sh从shell脚本执行python脚本(具有参数),python,linux,shell,Python,Linux,Shell,myfile.sh #!/bin/bash echo -e "\n starting python script" python main.py arg1 echo -e "\n done" 这是行不通的 上述文件给出了以下错误 starting python script Traceback (most recent call last): File "main.py", line 97, in <module> main() File "main", line
#!/bin/bash
echo -e "\n starting python script"
python main.py arg1
echo -e "\n done"
这是行不通的
上述文件给出了以下错误
starting python script
Traceback (most recent call last):
File "main.py", line 97, in <module>
main()
File "main", line 80, in main
header = "arg1: {}\n\n".format(sys.argv[1])
ValueError: zero length field name in format
done
启动python脚本
回溯(最近一次呼叫最后一次):
文件“main.py”,第97行,在
main()
文件“main”,第80行,在main中
header=“arg1:{}\n\n”。格式(sys.argv[1])
ValueError:格式为零长度的字段名
完成
main.py
...
...
def main():
""" main function
"""
header = "arg1: {}\n\n".format(sys.argv[1])
...
...
if __name__ == "__main__":
if len(sys.argv) == 2:
main()
else:
print "\n Invalid no. of arguments"
print "\n Usage:"
print "\n python {} <date>\n".format(sys.argv[0])
exit(1)
。。。
...
def main():
“主要功能
"""
header=“arg1:{}\n\n”。格式(sys.argv[1])
...
...
如果名称=“\uuuuu main\uuuuuuuu”:
如果len(sys.argv)==2:
main()
其他:
打印“\n无效的参数数”
打印“\n用法:”
打印“\n python{}\n.”格式(sys.argv[0])
出口(1)
调用具有shell脚本参数的python脚本的正确语法是什么?是的,这是正确的。请尝试以下示例: main.py
你的脚本应该很好用。这是一个玩具样品:
#!/bin/bash
echo -e "\n starting python script"
python main.py arg1 arg2 arg3
echo -e "\n done"
将main.py作为
#!/usr/bin/env python
from __future__ import print_function
import sys
print("In python pgm called from shell script with args:")
for i, a in enumerate(sys.argv):
print("argument {0} is {1}".format(i, a))
该错误可能是由“{}”引起的。需要有一个足够新的python版本才能工作(为了安全起见,2.7或更高版本…)。否则,请指定位置参数编号。您能再精确一点吗?也许有一个玩具的例子?是的,这是正确的,你不工作是什么意思?bash抛出错误,python抛出错误?您的python版本是什么?我们可以获取python脚本吗?@user189更新了main.py内容的问题,我的python版本是2.6.2Change{}-->{0},或者如果可能的话升级到2.7。因此,这不是调用python的问题,而是对python版本使用错误语法的问题。
#!/usr/bin/env python
from __future__ import print_function
import sys
print("In python pgm called from shell script with args:")
for i, a in enumerate(sys.argv):
print("argument {0} is {1}".format(i, a))