2016-08-23 23 views
2

私はいくつかの引数をPythonファイルに渡すjavaメソッドを持っています。JavaからPythonへの引数としてnull値を渡す方法

String name=null; //can be null or some value in some cases. 
.... 
String[] cmd = { 
         "python", 
         "C:/Python34/myscript.py", 
         name, 
         username, 
         pwd}; 
Process p=Runtime.getRuntime().exec(cmd); 

変数名は、いくつかの実行中にnullになり、それがヌルになったときには、しかし、私はjava.lang.NullPointerExceptionを取得していない可能性があります:私は、引数この方法を渡しています。

私のPythonファイルmyscript.pyは、コマンドプロンプトから実行していてもjavaから実行できない場合はnull値で実行されます。

例外なくnull値を渡す方法はありますか。これで私を助けることができますか?

+0

あなたは、Pythonにnullを認識させたい場合は、何も渡さないと思います。 – byxor

+0

なぜそれをString name = ''(空の文字列)として定義できないのですか? –

+1

nullと空の文字列を区別します。ほとんどのスクリプトベースの言語は、引数に空の文字列*を受け入れますが、NULLの概念は通常、コマンドライン引数には適用されません。 – RealSkeptic

答えて

0

ヌルとして渡す代わりに、NullPointerチェックを行い、空の文字列を渡します。

name = name == null ? "" : name; 

あなたのpythonスクリプトはnullの代わりに空の文字列をチェックするだけです。そして、あなたは単純なチェックで両方をチェックすることができます。以下のようなものが動作します。 PythonとJavaは、システムコールを使用しての間で通信している異なるプロセスであるため

if not name: 
    # this will check for both None and "" empty string 
    print "name was not passed" 
0

は、コマンドラインへのJava nullを変換することはできません。 Pythonプログラムに空の文字列(""ないnull)を渡すと、Pythonプログラムは、空の文字列を解釈し、それらを変換することができます:

は(何がPythonでnull呼び出しが実際Noneです)

あなたは何ができるかでありますNone

または慣例を決めます。"<NULL>"文字列がjavaから渡された場合、argsを解析するときにPython側からNoneと仮定します。

Jythonのような他のソリューションでは、システムコールに関係しないため、これを許可する可能性があります。

関連する問題