我正在尝试从本身称为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
sys.argv [0] -sys.argv []列表从sys.argv [1]开始!由于sys.code位于sys.argv [0]中,因此无法使用。
您也可以使用;导入argparse您可以获得一些额外的帮助功能,而无需添加错误函数sys.argv [1] == 1
另请参见:https://pythonprogramming.net/argparse-cli-intermediate-python-tutorial/