我有我认为是python字符串问题。目标是从python / Jython向java类发送一个File对象数组。我收到与发送到File构造函数的字符串路径相关的错误。我相信这是因为我似乎无法摆脱双斜线。下面的python代码:
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” 我也尝试过.replace('\\','\')在理解中无济于事。当我只输入字符串中的完整路径并将其发送到java.File对象时,它就可以工作。问题似乎是我无法摆脱使用理解的路径中的\。任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
这里的问题是onlyfiles
是一个字符串列表(<type 'str'>
),而不是文件列表。回想一下,通常在Python文件路径中只是作为字符串处理,os.path.*
方法接受一个字符串并返回一个字符串。
因此,您需要从字符串中创建Java File
。一种方式是这样的:
onlyjavafiles = [File(f) for f in onlyfiles]
因此,完整的示例如下所示(注意我添加了缺少的导入):
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)