GVKun编程网logo

从Java运行.py文件(java调用py文件)

25

在本文中,我们将为您详细介绍从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运行.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:从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文件互转)

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运行

我试图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运行的应用程序

从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运行的应用程序的相关知识,请在本站寻找。

本文标签: