0

jarパッケージを実行するには、特定のディレクトリにCDを挿入する必要があります。これは私が現在やろうとしていることですが、失敗しました:

subprocess.call(['cd','sales'])
subprocess.call(shlex.split("""java Autoingestion %s %s %s Sales Daily Details %s"""%                                                                         
            (self.username, self.password, self.vendor_number, self.date)))

どのようにしてsalesフォルダーに正しくcdして、このスクリプトを実行しますか?

4

4 に答える 4

2

やったほうがいい

subprocess.call(["java","Autoingestion",self.username, self.password, self.vendor_number, "Sales","Daily","Details",self.date, cwd="sales")

shlex.splitは安全ではないため、実行しないでください。

于 2012-05-15T18:42:12.283 に答える
1

1つの方法はos.chdir()、Javaサブプロセスを作成する前に使用することです。

于 2012-05-15T18:37:38.203 に答える
1

os.chdir()2回目の呼び出しの前に使用しますPopen(最初の呼び出しを取り除きPopenます)。

于 2012-05-15T18:39:23.413 に答える
0

os.chdir()を使用して、現在のディレクトリを指定されたディレクトリに変更します。

subprocess.call()ではなくsubprocess.Popen()を使用することをお勧めします。JAVA_PATHの設定など、Javaコードを実行する前に自分で環境を設定したい場合は、Popenのenv引数を設定することで簡単にできます。

from subprocess import Popen
from os import chdir
from os.path import exists

sales_dir = "/home/ubuntu/sales"

# Sanity check for the directory
if exists(sales_dir):
    chdir(sales_dir)

new_proces = Popen("java Autoingestion %s %s %s Sales Daily Details %s" % 
             (self.username, self.password, self.vendor_number, self.date))
于 2012-05-15T19:25:09.593 に答える