python - 无法将 sys.argv[0] 传递给 subprocess.call

标签 python ubuntu terminal subprocess sys

我正在尝试调用 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

最佳答案

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

关于python - 无法将 sys.argv[0] 传递给 subprocess.call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18998781/

相关文章:

node.js - API 调用仅适用于 IP 地址,不适用于我的域(Node.js Express、Godaddy、Google Compute Engine)

Swift 3 相当于 C++ 中的 "system()"

linux - 如何更改当前光标位置指示器的颜色?

python - 如何获得 apport sys.excepthook 的根目录?

python - 如何打印从内部有字典的字典中提取信息的句子

python - Python-如何拆分和加入音频?

python - 通过 Python 在 SSH 服务器中运行命令时出现“打开终端 : unknown. 时出错”错误

python - 如何在不使用条件语句的情况下将最大和最小边界应用于值

ruby - 无法在 ubuntu 中构建 gem native 扩展?

python - 如何使用从源代码构建的 python 配置 mod_wsgi?