使用命令行

时间:2015-11-13 19:28:53

标签: java python jar terminal

我正在使用.jar文件,但不幸的是作为一个黑盒子,即我不知道那里究竟是什么,也不知道它是如何工作的。

我正在从Python脚本向Mac终端发送命令。我输入以下命令:

java -jar jarfile.jar req_data /abs_path/to/required/data input path/to_my_/input/file.txt

这就是我需要的:使用'黑框'分析输入。并使用分析输出创建和新文件。此新文件在jarfile.jar所在的文件夹中创建。

我希望在创建时将此文件放在其他位置。

我尝试使用>运算符,指定路径,例如:

java -jar jarfile.jar req_data /abs_path/to/required/data input path/to_my_/input/file.txt > /output/path/

这在我想要的位置创建了一个文件,但它只是来自终端的消息,说"操作已成功执行" - 分析结果文件创建在与以前相同的文件夹中。 我也尝试了%*>,但它犯了一个错误。

作为一种糟糕的解决方法,我现在有一个功能,它会回顾性地查找并将所有新创建的文件(分析输出)移动到我想要的文件夹。

有没有办法用原始命令中的命令行来控制输出文件?或者是我在jar文件中指定的内容?我的问题是不允许编辑它。

1 个答案:

答案 0 :(得分:0)

我是python的新手。但是,我可能会建议尝试一些事情,如果他们可以为你工作。道歉我,如果不行!我相信你已经完成了以下步骤:

import subprocess
subprocess.call(['java', '-jar', 'Blender.jar'])

就像,如果你有一个正确配置的jar路径,那么可以直接运行jar。

其次,查看cwd参数(用于可执行文件)。将cwd参数包含为x

def run_command(command, **x):
    with subprocess.Popen(command,...., **x) as p:

for run_command指定工作目录(可能应该是)的路径或完整的系统路径。我不确定,试试两个。

表示run_command(r'java -jar jarfilepath', cwd=r'workingdirpath', universal_newlines=True):

中的输出行
print(outputline, end='')

或者,您可以尝试从要存储输出文件的目录中运行命令。尝试:将popen作为

运行
subprocess.Popen(r'directory of running command', cwd=r'workingdir')

其中workingdir可能是您当前的目录路径。

如果不起作用,请尝试不使用r'。如果仍然不起作用,请尝试在路径中加倍斜杠,如(C:\\ abc\\def