我正在使用.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
文件中指定的内容?我的问题是不允许编辑它。
答案 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
)