簡體   English   中英

從shell腳本執行python腳本(具有參數)

[英]Executing python script(having arguments) from shell script

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 80, in main
    header = "arg1: {}\n\n".format(sys.argv[1])
ValueError: zero length field name in format

done

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)

調用具有shell腳本參數的python腳本的正確語法是什么?

您的腳本應該可以正常工作。 這是一個玩具樣本:

#!/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或更高版本...)。 否則,請指定位置參數編號。

是的,這是正確的。 嘗試以下示例:

main.py

import sys
print sys.argv[1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM