【问题标题】:Can't pass sys.argv[0] to subprocess.call无法将 sys.argv[0] 传递给 subprocess.call
【发布时间】:2013-09-30 16:23:11
【问题描述】:

我正在尝试从终端调用python 脚本,该终端本身调用.jar。请注意,这个 java 程序接受一个参数(一个字符串)并用这个字符串的内容写入一个.txt 文件。

我的尝试是去(test.py):

#!/usr/bin/python

import sys
import subprocess

subprocess.call(['java','-jar',sys.argv[0],sys.argv[1]])

然后在终端输入:

python test.py test.jar Hello

但是,我收到错误 Invalid or corrupt jarfile test.jar。有趣的是以下将起作用:

#!/usr/bin/python

import sys
import subprocess

subprocess.call(['java','-jar','test.jar',sys.argv[0]])

接着是:

python test.py Hello

【问题讨论】:

    标签: python ubuntu terminal subprocess sys


    【解决方案1】:

    sys.argv[0] 实际上是您的 Python 文件的名称,因为它是您在 python 之后给出的第一个参数。因此,在您的通话中,您希望使用sys.argv[1]sys.argv[2]

    我的test.py

    import sys
    print(sys.argv[0])
    

    运行test.py:

    marius@devils-creek ~ ?  python test.py
    # Output 
    test.py
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 2021-06-18
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-29
      相关资源
      最近更新 更多