gpt4 book ai didi

java - 无法将脚本作为 Jython 运行。但使用 python 没有任何问题

转载 作者:行者123 更新时间:2023-11-30 08:10:32 26 4
gpt4 key购买 nike

我是 Jython 的新手。我正在尝试通过 Java 程序(使用 Jython)执行 python 脚本。在 python 脚本中,我试图调用一些外部库(称为 petl)的方法。当我尝试使用 python 执行脚本(如:python script.py)时,它执行时没有任何问题。但是,当我尝试使用 Jython 访问脚本(如:jython script.py)时,出现以下错误。

P.S:我可以毫无问题地运行简单的 python 脚本。但是当我尝试通过脚本访问外部库函数时,它给了我一个错误。

任何人都可以给我一个解决方法或一些建议吗?提前致谢。

Python 脚本:

import petl as etl

table1 = etl.fromcsv('Books.csv')
table2 = etl.sort(table1, 'ACCOUNT_ID')
etl.tocsv(table2, source='NewBooks.csv',encoding='utf-8')

错误堆栈:

Traceback (most recent call last):
File "test1.py", line 5, in <module>
etl.tocsv(table2, source='NewBooks.csv',encoding='utf-8')
File "C:\Jython\Lib\site-packages\petl\io\csv.py", line 106, in tocsv
tocsv_impl(table, source=source, encoding=encoding, errors=errors,
File "C:\Jython\Lib\site-packages\petl\io\csv_py2.py", line 50, in tocsv_impl
_writecsv(table, source=source, mode='wb', **kwargs)
File "C:\Jython\Lib\site-packages\petl\io\csv_py2.py", line 74, in _writecsv
for row in rows:
File "C:\Jython\Lib\site-packages\petl\transform\sorts.py", line 271, in _iter
nocache
hdr = next(it)
File "C:\Jython\Lib\site-packages\petl\io\csv_py2.py", line 30, in __iter__
codec = getcodec(self.encoding)
File "C:\Jython\Lib\site-packages\petl\io\base.py", line 12, in getcodec
codec = codecs.lookup(encoding)
at org.python.core.codecs.normalizestring(codecs.java:62)
at org.python.core.codecs.access$200(codecs.java:29)
at org.python.core.codecs$CodecState.lookup(codecs.java:1695)
at org.python.core.codecs.lookup(codecs.java:58)
at org.python.modules._codecs.lookup(_codecs.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)

java.lang.NullPointerException: java.lang.NullPointerException

最佳答案

在调用 fromcsv() 和 tocsv() 函数时,您必须显式传递编码值。

import petl as etl

table1 = etl.fromcsv(source='Books.csv',encoding='utf-8')
table2 = etl.sort(table1, 'ACCOUNT_ID')
etl.tocsv(table2, source='NewBooks.csv',encoding='utf-8')

关于java - 无法将脚本作为 Jython 运行。但使用 python 没有任何问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30445148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com