如何用命令行参数调用Python脚本?
我有一个脚本,叫做 client.py,它直接从命令行读取参数,而不是像 main() 这样的函数包装起来,代码大概是这样的:
opts, args = getopt.getopt(sys.argv[1:], "l:r:a:j:b:f:n:u:")
然后它会打印出很多东西。
我需要从我的代码中调用这个脚本(在 Google App Engine 上,如果这有关系的话)。看起来调用
import client
会把 client.py 当作脚本来运行,但我该怎么指定参数呢?
3 个回答
0
你不能这样做。你可以使用 subprocess
或 os.exec*()
,或者修改另一个脚本,让它使用一个主控制器,这个控制器可以解析参数,然后把这些参数传递给 main()
函数,最后你自己调用 main()
,并传入合适的参数。
另外,记得要 import client
。
1
Google AppEngine使用的是一个经过大幅修改的Python版本,并且禁用了很多系统和子进程库,还有大部分的C语言Python模块。要调用这个脚本,你需要导入一个入口点并调用它。我认为通常的做法是把你的入口点命名为main,然后调用它,同时传入它可能需要的参数。这通常是个好习惯。例如,在调用应用程序中:
from client import main
main()
2
除非真的需要,不然你不应该这样做:如果你有两个Python脚本,它们可以直接用Python进行沟通,而不是通过命令行解析器。你可以把client.py
重写一下,加上if __name__ == "__main__"
的检查,然后直接从你的脚本中调用它的主函数。
如果你没有办法这样做(而且尽量避免这种情况),你可以尝试设置sys.argv
;不过我不确定GAE是否允许这样做。你也可以试试用subprocess.Popen
。