我现在已经来堆栈流了一段时间,非常感谢这个令人难以置信的资源,因为它在无数次帮助过我,但这是我的第一个问题所以请怜悯我;)
我正在尝试将命令行选项传递给我的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.
我已经尝试了各种各样的事情来让它工作,但我不能通过"打开"来获取我的脚本中的参数。提前感谢您提供有关如何使其发挥作用的任何指导或建议。
答案 0 :(得分:1)
你的语法很好; open
将额外的参数传递给Terminal
,但终端忽略了它们。例如,这只是打开一个shell,并没有做任何回显:
open -a terminal /bin/bash --args -c 'echo foo bar'
如果要在新的终端窗口中运行带参数的命令,则需要执行不同的操作。查看this question的答案,了解相关信息。