我不能 运行 来自 java 的 python 脚本,我认为这是因为脚本没有执行权限
I can't run a python script from java and I think it's because the script does not have execute permissions
我正在尝试 运行 一个 python 脚本,每当按下我的 gui (swing) 上的按钮时。但是,脚本从来没有 运行s,我不确定如何解决这个问题。我知道该脚本独立运行良好,它应该是 py 而不是 python 因为 windows,而我的文件系统是 ntfs。
到目前为止,我一直在尝试使用可归纳如下的代码:
myBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
Process p = Runtime.getRuntime().exec("py myScript.py");
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
});
我不认为我可以 chmod ntfs 的东西,但我尝试通过右键单击 python 文件来设置权限并试图破坏安全设置。用户对脚本的完全控制没有任何作用。
python 脚本具有以下权限,我猜是我的代码没有运行,因为它没有执行权限。
-rw-r--r--
使用完整的 python 可执行文件路径而不是 "py"。它仅以读取权限执行文件。
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Sample {
public static void main(String[] args) throws Exception {
try {
Process p = Runtime.getRuntime().exec("C:/Windows/py myScript.py");
String cmdOutput = null;
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
// read the output from the command
while ((cmdOutput = stdInput.readLine()) != null) {
System.out.println(cmdOutput);
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
myScript.py
print("This line will be printed.")
输出:
C:\Users\Administrator\Documents\demo>javac Sample.java
C:\Users\Administrator\Documents\demo>java Sample
This line will be printed.
我正在尝试 运行 一个 python 脚本,每当按下我的 gui (swing) 上的按钮时。但是,脚本从来没有 运行s,我不确定如何解决这个问题。我知道该脚本独立运行良好,它应该是 py 而不是 python 因为 windows,而我的文件系统是 ntfs。
到目前为止,我一直在尝试使用可归纳如下的代码:
myBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
Process p = Runtime.getRuntime().exec("py myScript.py");
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
});
我不认为我可以 chmod ntfs 的东西,但我尝试通过右键单击 python 文件来设置权限并试图破坏安全设置。用户对脚本的完全控制没有任何作用。
python 脚本具有以下权限,我猜是我的代码没有运行,因为它没有执行权限。
-rw-r--r--
使用完整的 python 可执行文件路径而不是 "py"。它仅以读取权限执行文件。
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Sample {
public static void main(String[] args) throws Exception {
try {
Process p = Runtime.getRuntime().exec("C:/Windows/py myScript.py");
String cmdOutput = null;
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
// read the output from the command
while ((cmdOutput = stdInput.readLine()) != null) {
System.out.println(cmdOutput);
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
myScript.py
print("This line will be printed.")
输出:
C:\Users\Administrator\Documents\demo>javac Sample.java
C:\Users\Administrator\Documents\demo>java Sample
This line will be printed.