我如何正确使用" - args"运行时的选项" $ open myscript.py --args arg1 arg2"在命令行上

时间:2015-12-19 17:21:59

标签: python macos command-line terminal args

我现在已经来堆栈流了一段时间,非常感谢这个令人难以置信的资源,因为它在无数次帮助过我,但这是我的第一个问题所以请怜悯我;)

我正在尝试将命令行选项传递给我的python脚本,当它从命令行运行时,使用" open"命令。我明白我可以简单地使用$ python myscript.py [arg1] [arg2],但我真的想使用" open"命令,如果可能的话。

这是我的python脚本(myscript.py):

#!/usr/local/bin/python

import optparse
import sys

def main():
    parser = optparse.OptionParser()
    parser.add_option('--arg1', action="store", dest="arg1", type="int", default="0")
    parser.add_option('--arg2', action="store", dest="arg2", type="int", default="0")

    opts, remainder = parser.parse_args()

    print "Options: ",  str(opts)
    print "Remainders: ", str(remainder)
    print "Argv: ", sys.argv[:]

if __name__ == "__main__":
    main()

这是我在终端中运行的命令:

$ open -a terminal myscript.py --args --arg1=5 --arg2=10

那个输出:

Options:  {'arg1': 0, 'arg2': 0}
Remainders:  []
Argv:  ['/Users/test/Desktop/myscript.py']

所以脚本正在运行,但" - args"没有传入,脚本只是使用参数的默认值! 以下是open命令的--args选项的文档:

--args All remaining arguments are passed in argv to the application's main() function instead of opened.

我已经尝试了各种各样的事情来让它工作,但我不能通过"打开"来获取我的脚本中的参数。提前感谢您提供有关如何使其发挥作用的任何指导或建议。

1 个答案:

答案 0 :(得分:1)

你的语法很好; open将额外的参数传递给Terminal,但终端忽略了它们。例如,这只是打开一个shell,并没有做任何回显:

open -a terminal /bin/bash --args -c 'echo foo bar'

如果要在新的终端窗口中运行带参数的命令,则需要执行不同的操作。查看this question的答案,了解相关信息。