1

私はJythonの初心者です。Java プログラム (Jython を使用) を介して Python スクリプトを実行しようとしています。Pythonスクリプト内で、外部ライブラリ(petlと呼ばれる)のメソッドを呼び出そうとしています。python (As: python script.py) でスクリプトを実行しようとすると、問題なく実行されます。しかし、Jython (As: jython script.py) でスクリプトにアクセスしようとすると、次のエラーが表示されます。

PS: 簡単な 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
4

1 に答える 1

1

fromcsv() 関数と tocsv() 関数の両方を呼び出すときは、encoding の値を明示的に渡す必要があります。

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')
于 2015-05-26T11:25:55.127 に答える