想了解如何使用绝对路径从Java运行Python文件?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于java绝对路径怎么写的相关问题,此外,我们还将为您介绍关于c–如何将Qt文件路径从资源
想了解如何使用绝对路径从Java运行Python文件?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于java绝对路径怎么写的相关问题,此外,我们还将为您介绍关于c – 如何将Qt文件路径从资源转换为绝对路径?、java – 如何使用相对路径而不是绝对路径?、Java中项目的路径不要写相对路径,尽量用绝对路径、Java实现调用jython执行python文件的方法的新知识。
本文目录一览:- 如何使用绝对路径从Java运行Python文件?(java绝对路径怎么写)
- c – 如何将Qt文件路径从资源转换为绝对路径?
- java – 如何使用相对路径而不是绝对路径?
- Java中项目的路径不要写相对路径,尽量用绝对路径
- Java实现调用jython执行python文件的方法
如何使用绝对路径从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:/Users/Dima/Yandexdisk/_Application/WeldAnalysis/ExperimentDefaults.xlsx
从QRC文件的路径来看
:/Data/ExperimentDefaults.xlsx.
我怎样才能做到这一点?
解决方法
你有什么意愿用这样的文件路径? 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文件的其余部分的文件夹中).
我写这样的文件:
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中项目的路径不要写相对路径,尽量用绝对路径
-
问题
今天在将自己代码提交之后,有人提醒报了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文件的方法。分享给大家供大家参考,具体如下:
在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文件的方法的相关信息,可以在本站进行搜索。
本文标签: