GVKun编程网logo

如何使用绝对路径从Java运行Python文件?(java绝对路径怎么写)

9

想了解如何使用绝对路径从Java运行Python文件?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于java绝对路径怎么写的相关问题,此外,我们还将为您介绍关于c–如何将Qt文件路径从资源

想了解如何使用绝对路径从Java运行Python文件?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于java绝对路径怎么写的相关问题,此外,我们还将为您介绍关于c – 如何将Qt文件路径从资源转换为绝对路径?、java – 如何使用相对路径而不是绝对路径?、Java中项目的路径不要写相对路径,尽量用绝对路径、Java实现调用jython执行python文件的方法的新知识。

本文目录一览:

如何使用绝对路径从Java运行Python文件?(java绝对路径怎么写)

如何使用绝对路径从Java运行Python文件?(java绝对路径怎么写)

我想运行一个名为foo的python脚本。我有绝对路径,可以说:/ Users / me / pythonscripts /

我试过跑步:

String cmd="/Users/me/pythonscripts/"String py="foo"Runtime.getRuntime().exec("cd "+cmd);Runtime.getRuntime().exec("python "+py+".py");

但这确实运行了python文件。

答案1

小编典典

尝试使用更多类似…

Runtime.getRuntime().exec("python "+cmd + py + ".py");

代替。每个exec都是自己的过程,并且多个exec彼此之间没有关系…

您还应该考虑ProcessBuilder改用,因为这为您提供了较高的可配置性,例如,您可以更改执行路径上下文…

ProcessBuilder pb = new ProcessBuilder("python", py + ".py");pb.directory(new File(cmd));pb.redirectError();//...Process p = pb.start();

另外,请注意,Python的输出流有问题,这可能会阻止Java读取它直到完全完成为止…

同样,确保python在外壳程序的搜索路径内,否则,您还需要指定命令的完整路径

c – 如何将Qt文件路径从资源转换为绝对路径?

c – 如何将Qt文件路径从资源转换为绝对路径?

我需要接收绝对文件路径

C:/Users/Dima/Yandexdisk/_Application/WeldAnalysis/ExperimentDefaults.xlsx

从QRC文件的路径来看

:/Data/ExperimentDefaults.xlsx.

我怎样才能做到这一点?

解决方法

资源一起打包到QRC文件中,它们不会暴露给文件系统,因此它们无法转换为标准路径;就像访问zip文件中的文件一样.

你有什么意愿用这样的文件路径? QFile可以处理资源路径(“:/ …”)并打开这些文件,但其他文件处理API则不会(例如C的fopen或C的std :: ifstream).此外,出于同样的原因,如果作为参数传递,非Qt应用程序将无法打开此类文件.

您拥有的选项包括:

>使用QFile打开文件并使用相关的Qt类读取它(假设您正在处理Excel文件,我认为它不值得付出努力,除非您有一些库从内存缓冲区读取它).
>将文件从资源容器中复制到临时目录(可以使用QTemporaryDir创建一个),然后使用该文件:

QTemporaryDir tempDir;
if (tempDir.isValid()) {
  const QString tempFile = tempDir.path() + "/yourfile.xlsx";
  if (QFile::copy(":/yourfile.xlsx",tempFile)) {
    // your file is Now extracted to the filesystem
  }
}

只要知道,当tempDir被销毁时,临时目录也会被删除,因此也就是你的文件.您可以通过禁用auto-remove功能来避免这种情况:tempDir.setAutoRemove(false)并在完成提取的文件后手动删除临时目录.

java – 如何使用相对路径而不是绝对路径?

java – 如何使用相对路径而不是绝对路径?

所以我对 Java有一个奇怪的问题.

我正在读写文件,所以路径对我很重要.我希望所有文件都是从相对路径写入和读取的(即在我的类和java文件的其余部分的文件夹中).

我写这样的文件:

FileWriter fw = new FileWriter(outfile,true);
fw.write(data);
fw.close();

outfile就像’out.txt'(即我们希望输出进入的文件的名称).

问题是,文件是在/ home / me /中创建的,而不是我的其他文件的路径.

难道我做错了什么?或者我怎样才能将文件存储在相关目录中?

解决方法

FileWriter fw = new FileWriter("./" + outfile,true);

要么

FileWriter fw = new FileWriter("~/" + outfile,true);

我会试试.

Java中项目的路径不要写相对路径,尽量用绝对路径

Java中项目的路径不要写相对路径,尽量用绝对路径

  • 问题

今天在将自己代码提交之后,有人提醒报了404错误

我还傻傻的说我这里不报错啊,是不是你那里出问题了

浏览器报404,找到了这一个ajax请求

并且在控制层也能找到对应的响应器,检查了半天却没有发现错误,但是在同事那里就是报404的错误

  • 错误原因及解决方案

后来发现在问题出新的原因是因为url我使用的是相对路径

在idea中打开tomcat configuration

在这里我发现我的Application context选择的是默认值,也就是部署在了服务器的webapp的root路径下,而同事那里在这里设置了值ContextName,那么他的项目就部署在了webapp的ContextName路径下面(有关application context的信息可以点击链接:idea配置application context(web项目的默认访问路径)

 

因为同事那里给tomcat的添加了虚拟路径,而我这里没有设置

因此我就直接在服务器的根路径下就能访问到“count/subjectCount”,并且项目的访问路径如下图

 

但是我的同事给容器添加了虚拟路径,ContextName

这时我们就要在访问路径前面提添加"ContextName”,即新的url是“ContextName/count/subjectCount”,并且此时的项目访问路径如下图

这也就是问题出现的的原因,有的人对容器添加了虚拟路径,有的人没有给容器添加虚拟路径,直接放在toot里面了

 关于application context设置与不设置的区别

结论

在这里说明一下,${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%> 。

也就是取出部署的应用程序名或者是当前的项目名称

因此,我们就应该设置访问路径的时候,使用绝对路径进行访问

  • 使用jquery
var url=''${pageContext.request.contextPath}''+''/count/subjectCount'';
  • 使用jsp的原始方法
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+''://''+request.getServerName()+'':''+request.getServerPort()+path+''/'';
%>
***********
var url=path+''/count/subjectCount'';

var url2=basePath+''/count/subjectCount'';
***********

在这里basePath获取了完整的路径和端口号还有项目的上下文环境。 ,可解决因为修改服务器端口号引起的找不到路径问题。

Java实现调用jython执行python文件的方法

Java实现调用jython执行python文件的方法

这篇文章主要介绍了Java实现调用jython执行python文件的方法,结合实例形式分析了Java调用jython执行python文件的常见操作技巧及相关问题解决方法,需要的朋友可以参考下

本文实例讲述了Java实现调用jython执行python文件的方法。分享给大家供大家参考,具体如下:

在web开发时候,经常在web环境使用本地环境的第三方库什么的,本文讲解java如何执行python文件。

网上说方法有三种,其实也就两种,下面着中介绍第二种通过(jython)。

方法一

java.lang.Runtime Runtime rt = Runtime.getRuntime(); try { Process proc = rt.exec("python /tmp/test.py"); }catch (Exception e){ e.printstacktrace(); }

小计一下:

1、Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法。

2、Runtime上其他大部分的方法都是实例方法,也就是说每次进行运行时调用时都要用到getRuntime方法。

3、Runtime中的exit方法是退出当前JVM的方法,估计也是唯一的一个吧,因为我看到System类中的exit实际上也是通过调用Runtime.exit()来退出JVM的,这里说明一下Java对Runtime返回值的一般规则(后边也提到了),0代表正常退出,非0代表异常中止,这只是Java的规则,在各个操作系统中总会发生一些小的混淆。

第二种(重点)

调用jython API

第一步:添加依赖

org.pythonjython2.7.0

第二步:新建一个Test.java测试类

import org.python.util.pythoninterpreter; import java.util.Properties; /** * Author: 遇见小星 * Email: tengxing7452@163.com * Date: 17-3-21 * Time: 下午8:18 * Describe: jpython test */ public class Test { public static void main(String []args){ pythoninterpreter interpreter = new pythoninterpreter(); interpreter.exec("days=('Mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); interpreter.exec("print days[1];"); interpreter.execfile("/tmp/test.py"); interpreter.exec("print 'created by tengxing on 2017.3'"); } }

第三步:运行Test.java

Testing started at 下午9:40 ... Tue this is test.py created by tengxing on 2017.3!

进程已结束,退出代码0

提醒可能报如下异常:

Exception in thread "main" ImportError: Cannot import site module and its dependencies: No module named site

Determine if the following attributes are correct:

原因:没有初始化 python.import.site

解决:

public class Test { public static void main(String []args){ Properties props = new Properties(); props.put("python.home", "path to the Lib folder"); props.put("python.console.encoding", "UTF-8"); props.put("python.security.respectJavaAccessibility", "false"); props.put("python.import.site", "false"); Properties preprops = System.getProperties(); pythoninterpreter.initialize(preprops, props, new String[0]); pythoninterpreter interpreter = new pythoninterpreter(); interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); interpreter.exec("print days[1];"); interpreter.execfile("/tmp/test.py"); interpreter.exec("print 'created by tengxing on 2017.3!'"); } }

ok 完美

//调用python中的方法,并且打印结果 PyFunction func = (PyFunction) interpreter.get("adder",PyFunction.class); int a = 2010, b = 2; PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b)); System.out.println("anwser = " + pyobj.toString());

参考文章:

https://www.html.cn/article/137380.htm

https://www.html.cn/article/137385.htm

附:jython.jar点击此处本站下载

更多java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

我们今天的关于如何使用绝对路径从Java运行Python文件?java绝对路径怎么写的分享就到这里,谢谢您的阅读,如果想了解更多关于c – 如何将Qt文件路径从资源转换为绝对路径?、java – 如何使用相对路径而不是绝对路径?、Java中项目的路径不要写相对路径,尽量用绝对路径、Java实现调用jython执行python文件的方法的相关信息,可以在本站进行搜索。

本文标签: