[英]call a function with argeparse option and pass it a sys.argv element
[英]Can't pass sys.argv[0] to subprocess.call
我正在尝试从本身调用.jar
的终端调用python
脚本。 请注意,这个 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.