1

サブプロセスモジュールでpythonのCallメソッドを使用してsqlldrコマンドを実行しています

from subprocess import call

retcode = call([self.COMMAND, self.CONNECTION_STRING, "control=" +self.CONTROL_FILE, 
            "log="+self.TEMP_LOG_FILE, self.MODE , "data="+loadfile])

上記のスクリプトを実行すると、sqlldr コマンドの出力がコンソールに出力されます。これをファイルにリダイレクトするか無視します。sqlldr は指定されたログにも書き込むためです。

出力をファイルにリダイレクトするためにこのようなことを試みましたが、この行でエラーをスローしました

retcode = call([self.COMMAND, self.CONNECTION_STRING, "control=" +self.CONTROL_FILE, 
            "log="+self.TEMP_LOG_FILE, self.MODE , "data="+loadfile, "> discard.log"])

これを達成する方法は?

4

1 に答える 1

2

書き込み用にファイルを開き、それを の stdout キーワード引数として渡しますsubprocess.call

with open('stdout.txt', 'wb') as out:
  subprocess.call(['ls', '-l'], stdout=out)

(コンストラクタsubprocess.callと同じ引数を受け入れます。)subprocess.Popen

于 2011-09-23T17:10:34.220 に答える