Jython 将 java 文件对象数组从 python 发送到 java class
Jython sending array of java File objects to java class from python
我认为是 python 字符串问题。目标是从 python/Jython 发送一个 java class 文件对象数组。我收到与发送到 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: can't convert 'C:\..." 到 Java.io.File
我也试过 .replace('\\','\') 在理解中无济于事。当我在字符串中键入完整路径并将其发送到 java.File 对象时,它会起作用。问题似乎是我无法使用理解摆脱路径中的 \'s 。任何帮助将不胜感激。谢谢你!
这里的问题是 onlyfiles
是字符串列表 (<type 'str'>
),而不是文件列表。回想一下,通常在 Python 中,文件路径被简单地作为字符串处理,并且 os.path.*
方法接受一个字符串,return 一个字符串。
因此您需要从字符串中提取 Java File
s。一种方式是这样的:
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)
我认为是 python 字符串问题。目标是从 python/Jython 发送一个 java class 文件对象数组。我收到与发送到 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: can't convert 'C:\..." 到 Java.io.File 我也试过 .replace('\\','\') 在理解中无济于事。当我在字符串中键入完整路径并将其发送到 java.File 对象时,它会起作用。问题似乎是我无法使用理解摆脱路径中的 \'s 。任何帮助将不胜感激。谢谢你!
这里的问题是 onlyfiles
是字符串列表 (<type 'str'>
),而不是文件列表。回想一下,通常在 Python 中,文件路径被简单地作为字符串处理,并且 os.path.*
方法接受一个字符串,return 一个字符串。
因此您需要从字符串中提取 Java File
s。一种方式是这样的:
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)