2017-12-31 128 views
0

Pythonスクリプトでいくつかのタスクを自動化したいと思います。 基本的なアプリケーションはJavaで書かれています。私のような絶対パスとして新しいディレクトリのパスを渡すとPythonでのファイル操作Javaでのトリガー

#! python3 
import sys,shelve,os 

filename = 'log.txt' 
logfile = open(filename,'w') 
path = sys.argv[1] 
path = os.path.abspath(path) 
logfile.write(str(path)) 
logfile.close() 

if not os.path.exists(path): 
    os.mkdir(path) 

:私はちょうどPythonスクリプト上でディレクトリを作成しようとしているので、最初のIMで

Process p = Runtime.getRuntime().exec(PYLOCATION + " " + pyScript + " " + ARGS) 

を使用するPythonのものをトリガする

static final String ARGS = "G:\\SNMP_Tool\\PythonScripts\\defaultDataBase"; 

私はそれを渡すと、それは

正常に動作する相対的e like

static final String ARGS = "..\\PythonScripts\\defaultDataBase"; 

です。 (もし私が直接Pythonスクリプトで相対パスの文字列を入力しても動作します)

Javaアプリケーションからタスクが開始された場合は、ログファイルlog.txtも書き込まれません。

私がマウスで.pyスクリプトを2回ヒットしたら、それはログファイルを必要に応じて書き込みます。

ファイルを書き込む際の問題は、ウィンドウからの承認である可能性があります。

しかし、なぜそれが引数文字列に相対パスを取るか?答え

答えて

0

ため

おかげで2つの私は考えることができるアプローチがあります。Javaスクリプトで

  1. 、Pythonスクリプトに渡す前に、絶対パスにファイルを解決する、または
  2. は、 execの形式を使用して作業ディレクトリを指定します。

    String[] args = {pyScript, ARGS}; 
    Process p = Runtime.getRuntime().exec(
         PYLOCATION, 
         args, 
         new File("G:\.....")) 
    
+0

お礼ありがとうございます。 作業ディレクトリのヒントは金色でした! 私の場合、私は で.pyスクリプトでこれらのダイレクトを取得することに決めました。currentDir = os.getcwd() – fusel