【发布时间】:2021-10-31 23:20:42
【问题描述】:
我有一个简单的 Java 应用程序,它在运行时通过传递 2 个参数来进行加法。代码如下:
package test_python;
import java.util.concurrent.TimeUnit;
public class Test_python {
public int addition(int first, int second) {
return first + second;
}
public static void main(String[] args) {
Test_python a = new Test_python();
System.out.println(a.addition(Integer.parseInt(args[0]), Integer.parseInt(args[1])));
}
}
我有一个 python 脚本:
import subprocess
import sys
first_arg = subprocess.check_output([sys.argv])
second_arg = subprocess.check_output([sys.argv])
subprocess.call(['java', '-jar', 'test_python.jar ',first_arg,second_arg])
我想将两个参数(如 2 和 3)传递给 python 脚本,并将参数发送到 jar 并返回响应。我尝试时收到此错误:
Traceback (most recent call last):
File "C:\Certificat python\start-stop.py", line 5, in <module>
first_arg = subprocess.check_output([sys.argv])
File "C:\Users\40723\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line
424, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "C:\Users\40723\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line
505, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Users\40723\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line
951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\40723\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line
1360, in _execute_child
args = list2cmdline(args)
File "C:\Users\40723\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line
565, in list2cmdline
for arg in map(os.fsdecode, seq):
File "C:\Users\40723\AppData\Local\Programs\Python\Python39\lib\os.py", line 822, in
fsdecode
filename = fspath(filename) # Does type-checking of `filename`.
TypeError: expected str, bytes or os.PathLike object, not list
你能给我一个解决方案吗?
提前致谢
【问题讨论】:
-
你能分享一下python脚本是如何被调用的命令吗?只是
python script.py 2 3吗?还是./script.py 2 3?还是别的什么? -
python script.py 2 3
标签: java python command-line-arguments