通过Matillion AWS在Jython中使用org.python.core.PyList

通过Matillion AWS在Jython中使用org.python.core.PyList,python,amazon-web-services,jython,matillion,Python,Amazon Web Services,Jython,Matillion,我正在Matillion ETL中运行一个用于红移的Python脚本组件。该组件正在使用Jython,代码如下。由于对象转换错误,context.updateGridVariable行出现错误 我想知道如何实例化org.python.core.PyList对象,以便填充它,而不是我得到的java.lang.String 输出 [u's3://bucket landingzone/inbox/dt_employees_20180614.csv'] java.lang.ClassCastExcept

我正在Matillion ETL中运行一个用于红移的Python脚本组件。该组件正在使用Jython,代码如下。由于对象转换错误,context.updateGridVariable行出现错误

我想知道如何实例化org.python.core.PyList对象,以便填充它,而不是我得到的java.lang.String

输出

[u's3://bucket landingzone/inbox/dt_employees_20180614.csv'] java.lang.ClassCastException:java.lang.ClassCastException:java.lang.String不能强制转换为第26行的org.python.core.PyList

代码

import boto3
import json

s3 = boto3.resource('s3')
bucket = "bucket-landingzone"
name = "inbox/dt_employee_20180615"
file_list = []

manifest_object = s3.Object(bucket,name)

file_content = manifest_object.get()['Body'].read().decode('utf-8')
json_content = json.loads(file_content)

for entry in json_content['entries']:
  for attribute, value in entry.iteritems():
    if attribute == 'url':
        file_list.append(value)

print(file_list)

context.updateGridVariable('manifest_entries', file_list)

print(context.getGridVariable('manifest_entries'))

要将字符串,
'manifest\u entries'
包装在列表中,只需将其用方括号括起来即可。我相信错误是指文件列表不是列表。这是updateGridVariable方法的语法:context.updateGridVariable('mygridvar',[['list','of'],['list','!']])manifest_entries'是网格变量的名称,而file_列表是内容。@DavidCharles您的评论让我找到了正确的方向。如果您想发布一个答案,说明这行代码中的括号将修复它,我将把它标记为答案。。。。文件\u list.append([value])