我有以下文件夹结构,并且在 util.py 中有一个测试方法。运行 util 方法时,我看到一个模块出错,该模块导入到我试图获取所有类的模块中。
Parent
--report <dir>
----__init__.py
----AReport.py
----names_list.py
--util.py
Run Code Online (Sandbox Code Playgroud)
实用程序
import inspect
import importlib
import importlib.util
def get_class_names(fileName):
for name, cls in inspect.getmembers(importlib.import_module(fileName, package='report'), inspect.isclass):
print(name, cls)
if __name__ == '__main__':
get_class_names('report.names_list')
Run Code Online (Sandbox Code Playgroud)
名称列表.py
from AReport import AReport
class Team:
name = ""
def __init__(self, name):
self.name = name
class Names_List(AReport):
def __init__(self, name=None):
AReport.__init__(self, name)
def test(self):
print('In test')
Run Code Online (Sandbox Code Playgroud)
报表文件
from abc import ABCMeta, abstractmethod
class AReport(metaclass=ABCMeta):
def __init__(self, name=None):
if name:
self.name = name
def test(self): …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 ProcessBuilder 从 python 脚本获取返回值到 Java 中。我期待 Java 中的值“这就是我正在寻找的”。谁能指出我下面的逻辑有什么问题?
我正在使用 python3 并希望使用 java 标准库完成此操作。
测试代码
import sys
def main33():
return "This is what I am looking for"
if __name__ == '__main__':
globals()[sys.argv[1]]()
Run Code Online (Sandbox Code Playgroud)
Java代码
String filePath = "D:\\test\\test.py";
ProcessBuilder pb = new ProcessBuilder().inheritIO().command("python", "-u", filePath, "main33");
Process p = pb.start();
int exitCode = p.waitFor();
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
line = in.readLine();
while ((line = in.readLine()) != null){
line = line + line;
}
System.out.println("Process exit …Run Code Online (Sandbox Code Playgroud)