我来stackoverflow已经有一段时间了,我非常感谢这个不可思议的资源,因为它在无数场合帮助了我,但这是我的第一个问题,所以请宽恕我;)
当用“open”命令从命令行运行python脚本时,我试图将命令行选项传递给python脚本。我知道我可以简单地使用$pythonmyscript.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.
我已经尝试了各种各样的事情,试图让这个工作,但我不能让参数进入我的脚本通过“开放”。提前感谢您对如何让这项工作的任何指导或建议。你知道吗
虽然我仍然不清楚如何正确地使用args选项打开命令,但我已经找到了一个合适的解决方法。你知道吗
结果是:
我最初想要使用open命令的主要原因是打开一个新的终端窗口来运行带有参数的myscript。这个解决方法也做了同样的事情,但只是创建了一个终端shell脚本,使其成为UNIX可执行文件,使用“open”而不使用args来用python运行它。我仍然想了解如何使用args和open,以及为什么不创建一个完整的shell脚本就不可能做到这一点,但我只是很高兴它被发现;)非常感谢Mark Reed为我指明了正确的方向!我希望有一天这也能帮助别人。你知道吗
您的语法很好;
open
正在将额外的参数传递给Terminal
,但是Terminal正在忽略它们。例如,这只是打开一个shell,不进行任何回音:如果要在新的终端窗口中运行带参数的命令,则需要执行一些不同的操作。查看this question的答案以获取想法。你知道吗
相关问题 更多 >
编程相关推荐