Jython从python向java类发送java文件对象数组
我认为这是一个python字符串问题。目标是从python/Jython向java类发送一个文件对象数组。我收到一个与发送到文件构造函数的字符串路径相关的错误。我相信这是因为我似乎无法摆脱双斜杠。python代码如下:Jython从python向java类发送java文件对象数组,java,python,jython,Java,Python,Jython,我认为这是一个python字符串问题。目标是从python/Jython向java类发送一个文件对象数组。我收到一个与发送到文件构造函数的字符串路径相关的错误。我相信这是因为我似乎无法摆脱双斜杠。python代码如下: from java.io import File from jarray import array myPath ='C:\\something\\somethingElse' onlyfiles = [ abspath(join(myPath,f)) for f in lis
from java.io import File
from jarray import array
myPath ='C:\\something\\somethingElse'
onlyfiles = [ abspath(join(myPath,f)) for f in listdir(myPath) if isfile(join(myPath,f))]
jythonArray = array(onlyfiles, String)
temp=array(onlyfiles,File)
我得到错误“TypeError:无法将'C:\…”转换为Java.io.File
我也试过了。在理解中替换(“\\”,“\\”)无效。当我在字符串中键入完整路径并将其发送到java.File对象时,它就可以工作了。问题似乎是,我无法通过理解摆脱路径中的。任何帮助都将不胜感激。谢谢大家! 这里的问题是
onlyfiles
是字符串列表(
),而不是文件列表。回想一下,在Python中,文件路径通常只作为字符串处理,并且os.path.*
方法获取字符串并返回字符串
因此,您需要使Java文件
s脱离字符串。一种方法是这样的:
onlyjavafiles = [File(f) for f in onlyfiles]
因此,完整示例如下所示(注意,我添加了缺少的导入):
非常有效,谢谢!我误解了医生的意思。array()不会通过文件构造函数运行字符串列表来生成文件列表。它只定义数组的类型。知道了!
from java.io import File
from java.lang import String
from jarray import array, zeros
from os import listdir
from os.path import isfile, join, abspath
myPath = '/tmp'
onlyfiles = [abspath(join(myPath, f)) for f in listdir(myPath) if isfile(join(myPath, f))]
onlyjavafiles = [File(f) for f in onlyfiles]
jythonArray = array(onlyfiles, String)
temp = array(onlyjavafiles, File)