在STAF/STAX中导入json



我一直致力于STAF&STAX。我的目标是使用STAF&STAX返回测试用例PASSFAIL。我尝试用最新的python版本将staf更新到最新版本。

Python版本详细信息

20130408-15:38:19   
Python Version : 2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06) 
[Java HotSpot(TM) Client VM (Sun Microsystems Inc.)]

这是我的代码:

try:
      import simplejson as json
    except ImportError:
      import json
  title = [] 
  album = []
  slist = []
  json_data=open('d:Json_File.txt')
  data = json.load(json_data)
  for i in range(data["result"].__len__()):
      title = data["result"][i]["Title"]
      album = data["result"][i]["Album"]
      slist = data["result"][i]["Title"] + ' [' + data["result"][i]["Album"] + '] n'

它给出了下面给出的错误

20130408-11:32:26   STAXPythonEvaluationError signal raised. Terminating job. 
===== XML Information =====
File: new13.xml, Machine: local://local 
Line 15: Error in element type "script".
===== Python Error Information =====
com.ibm.staf.service.stax.STAXPythonEvaluationException: 
Traceback (most recent call last):
  File "<pyExec string>", line 1, in <module>
ImportError: No module named simplejson
===== Call Stack for STAX Thread 1 =====[
  function: main (Line: 7, File: C:STAFservicesstaxsamplesnew13.xml, Machine: local://local)
  sequence: 1/2 (Line: 14, File: C:STAFservicesstaxsamplesnew13.xml, Machine: local://local)
]

在STAF模块中包含JSON的过程是什么。

STAX使用Jython(用Java编写的Python版本(而不是Python来执行STAX作业中元素内的代码。正如我所说,我使用的是STAX的最新版本v3.5.4,然后它提供了一个嵌入式Jython 2.5.2(它实现了与Python 2.5相同的一组语言功能(来执行元素中的代码。

注意:Jython 2.5.2不包括simplejson,因为simplejson包含在Python 2.6或更高版本中。

《STAX用户指南》中的附录F:"Jython和CPython的差异"谈到了Jython与Python(又名CPython(之间的一些差异。在系统中安装Python2.7或更高版本不会影响STAX使用Jython2.5.2在STAX作业中的元素内执行代码的事实。但是,"simplejson可以通过Jython运行。">我在STAX作业中将包含simplejson模块的目录添加到sys.path中,然后导入simplejson
例如:

<script> 
  myPythonDir = 'C:/simplejson'   
  import sys 
  pythonpath = sys.path 
  # Append myPythonDir to sys.path if not already present 
  if myPythonDir not in pythonpath: 
    sys.path.append(myPythonDir) 
  import simplejson as json 
</script> 

或者,如果您想使用系统上安装的Python 2.7或更高版本(包括simplejson(,您可以使用**元素通过STAX作业运行Python脚本(使用json(。

例如,使用Python 2.7(如果安装在C:\Python2.7中(在C:\tests中运行名为YourPython script.py的Python脚本。

<process> 
  <location>'local'</location> 
  <command mode="'shell'">'C:/Python2.7/bin/python.exe YourPythonScript.py'</command> 
  <workdir>'C:/tests'</workdir> 
</process> 

我对STAF/STAX知之甚少。但根据错误的说法,simplejson模块似乎不可用。将导入行重写如下:

try:
  import simplejson as json
except ImportError:
  import json

如果导入失败,您可以回退到json模块(Python 2.6+(。

相关内容

  • 没有找到相关文章

最新更新