在本文中,我们将为您详细介绍从Java运行.py文件的相关知识,并且为您解答关于java调用py文件的疑问,此外,我们还会提供一些关于Java:从Java运行批处理脚本时检测用户提示、jupyter运
在本文中,我们将为您详细介绍从Java运行.py文件的相关知识,并且为您解答关于java调用py文件的疑问,此外,我们还会提供一些关于Java:从Java运行批处理脚本时检测用户提示、jupyter运行py文件(py文件和ipynb文件互转)、sed命令无法从Java运行、从Jar或Batch文件执行Java运行的应用程序的有用信息。
本文目录一览:- 从Java运行.py文件(java调用py文件)
- Java:从Java运行批处理脚本时检测用户提示
- jupyter运行py文件(py文件和ipynb文件互转)
- sed命令无法从Java运行
- 从Jar或Batch文件执行Java运行的应用程序
从Java运行.py文件(java调用py文件)
我正在尝试从Java代码执行.py文件。我将.py文件移动到Java项目的默认目录中,并使用以下代码对其进行调用:
String cmd = "python/"; String py = "file"; String run = "python " +cmd+ py + ".py"; System.out.println(run); //Runtime.getRuntime().exec(run); Process p = Runtime.getRuntime().exec("python file.py");
使用变量run或整个路径或“ python file.py”,我的代码正在运行,显示消息构建成功总时间为0秒,而没有执行file.py。我这是什么问题
答案1
小编典典您也可以这样使用:
String command = "python /c start python path\to\script\script.py";Process p = Runtime.getRuntime().exec(command + param );
要么
String prg = "import sys";BufferedWriter out = new BufferedWriter(new FileWriter("path/a.py"));out.write(prg);out.close();Process p = Runtime.getRuntime().exec("python path/a.py");BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));String ret = in.readLine();System.out.println("value is : "+ret);
从Java运行Python脚本
Java:从Java运行批处理脚本时检测用户提示
我需要从Java执行批处理脚本,该脚本执行以下操作
1)一旦启动,它将执行一个冗长的任务(最多几秒钟)。
2)此后,它显示提示“密码:”。
3)然后,用户输入密码并按Enter键。
4)然后,脚本完成其工作。
我知道如何从Java启动脚本,知道如何在Java中读取批处理脚本的输出,但是我不知道如何等待密码提示出现(如何知道批处理脚本正在等待密码条目)。
因此,我的问题是:如何知道批处理脚本何时打印提示?
目前,我有以下代码:
final Runtime runtime = Runtime.getRuntime();final String command = ... ;final Process proc = runtime.exec(command, null, this.parentDirectory);final BufferedReader input = new BufferedReader(new InputStreamReader( proc.getInputStream()));String line = null;while ((line = input.readLine()) != null) { LOGGER.debug("proc: " + line);}
答案1
小编典典那应该做的工作:
public static void main(final String... args) throws IOException, InterruptedException { final Runtime runtime = Runtime.getRuntime(); final String command = "..."; // cmd.exe final Process proc = runtime.exec(command, null, new File(".")); final BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream())); StringBuilder sb = new StringBuilder(); char[] cbuf = new char[100]; while (input.read(cbuf) != -1) { sb.append(cbuf); if (sb.toString().contains("Password:")) { break; } Thread.sleep(1000); } System.out.println(sb);}
jupyter运行py文件(py文件和ipynb文件互转)
有趣的事,Python永远不会缺席!
如需转发,请注明出处:小婷儿的python https://i.cnblogs.com/EditPosts.aspx?postid=10750405
一、jupyter notebook里ipynb文件转为py文件
法一:
-
-
在xxx.ipynb所在目录下,打开终端,并输入命令:
-
1 jupyter nbconvert --to script xxx.ipynb
其中xxx.ipynb是要转换文件的名字,转换后在该目录下出现xxx.py文件。
法二:
-
-
启动Jupyter notebook
-
在网页下找打ipynb文件,然后选择file--download as--python file
-
二、jupyter notebook 加载py文件(即转为ipynb文件)
In [ ]:%run lhr.py
加载了lhr.py文件,相当于导包。
In [ ]:%load lhr.py
把lhr.py的代码显示出来。
结果
Successfully !!!
有趣的事,Python永远不会缺席!还不来加我,瞅什么瞅。
sed命令无法从Java运行
我试图sed
从Java 运行命令而没有成功。这是我的Java代码:
String[] cmd = {"sed","-i","'"+lineIndex+"s/"+line+"/"+currentBid+"/g'","/data/jsp/items.xml"};
Runtime.getRuntime().exec(cmd);
我也尝试过:
String[] cmd = {"/bin/sh","-c","sed","/data/jsp/items.xml"};
Runtime.getRuntime().exec(cmd);
问题是,如果我打印出的内容cmd
String
并在终端中运行它,它将起作用。由于某种原因,它只是不从Java执行。更清楚地说,当我直接从终端运行命令时,“
items.xml”文件就会更改。当我从Java运行它时,文件不会更改。我已验证该命令正确无误,如下所示。
我想念什么吗?
cmd的输出是 sed -i '21s/2/102/g' /data/jsp/items.xml
**编辑
我根据以下评论进行了以下更改。但是输出没有变化。
String[] cmd = {"/bin/sh","/data/jsp/items.xml"};
Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line2 = reader.readLine();
while (line2 != null) {
line2 = reader.readLine();
}
reader.close();
从Jar或Batch文件执行Java运行的应用程序
我有一个Java应用程序和一个构build文件,其中的任务之一,有一个任务,从应用程序创build一个jar文件,一个运行应用程序
<!-- ===== Create An Executable Jar target ======--> <target name="jar-task" depends="compile-task"> <mkdir dir="${jar.dir}"/> <jar destfile="jar/Guix.jar" basedir="${gui_bin.dir}"> <fileset dir="${basedir}"> <include name="img/**/" /> </fileset> <manifest> <attribute name="Main-Class" value="sys.deep.cepu.Start"/> </manifest> <filelist dir="${basedir}" files="user.properties"/> </jar> </target> <!-- ============ Run target =================== --> <target name="run-task" depends="jar-task"> <java classpath="${basedir};jar/Guix.jar;CK-DASP-2.0.0.jar;library/*;user.properties;img/* " classname="sys.deep.cepu.Start" fork="true"> </java> </target>
构build文件运行完美,jar被创build,应用程序运行。 我想让用户通过点击单个文件(jar或batch file)来启动应用程序。 我试图点击生成的可执行jar文件,但没有任何反应。 这是正常的吗? 有人可以给我一个如何从这个jar或batch file执行程序的帮助吗? 谢谢!
铬在Windows上生成失败
Golang Mac OSX为Docker机器构build
MSVC是否严格需要在Windows上编译?
如何使用BCP提取可以构build的Boost的子集?
为.exe和.dll文件批量设置版本号
当你建立你的jar文件时,你已经指定了Main-Class 。 但是你没有在清单文件中指定所需的库,只在运行应用程序的ant文件中指定。
写另一个清单属性到蚂蚁文件。 该name应该是Class-Path ,它是一个空格分隔的库列表。 看这里(维基百科)的例子。
之后,你的应用程序应该开始进入
java -jar Guix.jar
然后按照此问题中描述的步骤使其双击可启动。
是的,这是正常的。 您必须从命令行或通过批处理脚本启动它。 尝试使用作为批处理脚本(如果您有一个MANIFEST.MF)添加到您的jar。
java -ea -jar Application.jar <Parameters>
否则:
java -cp jar-file packageOfMainClass.MainClass
运行jar文件的其他方法
java -jar jar文件
java -cp jar-file MainClassNameFullyQualified
总结
以上是小编为你收集整理的从Jar或Batch文件执行Java运行的应用程序全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
关于从Java运行.py文件和java调用py文件的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Java:从Java运行批处理脚本时检测用户提示、jupyter运行py文件(py文件和ipynb文件互转)、sed命令无法从Java运行、从Jar或Batch文件执行Java运行的应用程序的相关知识,请在本站寻找。
本文标签: