cd进入另一个目录来执行脚本

时间:2012-05-15 18:34:10

标签: python

我需要cd进入一个特定的目录来运行一个jar包。这就是我目前正在尝试做的事情,虽然不成功:

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文件夹并执行此脚本?

4 个答案:

答案 0 :(得分:2)

你应该做

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

请注意,您不应该执行shlex.split,因为它不安全

答案 1 :(得分:1)

一种方法是在创建Java子流程之前使用os.chdir()

答案 2 :(得分:1)

在第二次Popen来电之前使用os.chdir()(并取消第一次Popen来电)。

答案 3 :(得分:0)

使用os.chdir()将当前目录更改为指定目录。

我建议您使用subprocess.Popen()而不是subprocess.call()。如果你想在运行java代码之前自己设置环境,比如设置JAVA_PATH等,通过设置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))
相关问题