window下java调用python脚本并读取Python运行结果

window下java调用python脚本并读取Python运行结果

java 代码如下:

import java.io.InputStreamReader;
import java.io.LineNumberReader;

public class TestRunPython {

	public static void main(String[] args) {
		String result = "";

        try {
            Process process = Runtime.getRuntime().exec("python C:/Users/s/my.py  test中文" );
            
            InputStreamReader ir = new InputStreamReader(process.getInputStream(),"GBK");
            LineNumberReader input = new LineNumberReader(ir);
            result = input.readLine();
            input.close();
            ir.close();
//            process.waitFor();
        } catch (Exception e) {
            System.out.println("调用python脚本并读取结果时出错:" + e.getMessage());
        }
        
        System.out.println(result);

	}

}


Python文件my.py代码如下:


import sys

if __name__ == "__main__":
    filename = sys.argv[1]
     
    print (filename)


运行结果:


  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用PyQt5提供的QProcess类在Python脚本中执行QML程序,并且通过进程通信机制(例如管道或共享内存)实现两者之间的通信。 以下是一个简单的示例,演示如何在Python脚本中启动QML应用程序并与其进行通信。 Python脚本部分: ```python import sys from PyQt5.QtCore import QProcess def start_qml_app(): app_path = "/path/to/qml/app" qml_process = QProcess() qml_process.start("qmlscene", [app_path]) qml_process.waitForStarted() # 向QML应用程序发送消息 qml_process.write(b"Hello from Python!\n") qml_process.closeWriteChannel() # 从QML应用程序接收消息 while qml_process.canReadLine(): message = qml_process.readLine().data().decode().strip() print("Received message from QML:", message) if __name__ == "__main__": start_qml_app() ``` QML应用程序部分: ```qml import QtQuick 2.0 import QtQuick.Controls 2.5 ApplicationWindow { id: appWindow visible: true width: 400 height: 400 TextEdit { id: messageBox anchors.centerIn: parent width: appWindow.width * 0.8 height: appWindow.height * 0.8 readOnly: true } Component.onCompleted: { // 从Python脚本读取消息 while (qmlProcess.canReadLine) { var message = qmlProcess.readLine(); messageBox.append(message); } } Connections { target: qmlProcess // 向Python脚本发送消息 onReadyRead: { var message = qmlProcess.readLine(); qmlProcess.close(); qmlProcess = null; qmlProcess = Qt.createQmlObject('import QtQuick 2.0; QtObject{}', appWindow, 'PythonProcess'); qmlProcess.write("Received message from QML: " + message); } } Component.onCompleted: { // 启动Python脚本 var qmlProcess = Qt.createQmlObject('import QtQuick 2.0; QtObject{}', appWindow, 'PythonProcess'); qmlProcess.start('python', ['/path/to/python/script.py']); qmlProcess.waitForStarted(); } } ``` 在这个示例中,Python脚本使用QProcess启动qmlscene,并向其发送一条消息。QML应用程序从Python脚本读取消息,并将其附加到TextEdit控件中。当QML应用程序关闭时,它向Python脚本发送一条消息,告诉它收到了QML消息,并在控制台中打印出来。 请注意,此示例中使用的进程通信机制是简单的管道。在实际应用中,您可能需要使用更复杂的通信机制,并且还需要处理错误和异常情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值