Python:是否可以在不更改实际当前目录的情况下更改Windows命令行shell当前目录?

时间:2011-02-02 23:49:11

标签: python cmd working-directory

我正在使用os.system()执行Windows命令行shell执行。我想更改Windows cmd当前目录。这是一种方法:

os.chdir('newPath')

但是chdir()也会改变实际的Python当前工作目录。我不想更改实际的Python工作目录,因为我希望我的脚本的其他部分在原始的当前工作目录中运行。我想要更改的只是Windows cmd当前工作目录。换句话说:我希望os.system()命令在一个当前工作目录(Windows cmd当前工作目录)中运行,而其他任何命令应该在另一个当前工作目录(实际的Python当前工作目录)中运行。

这是另一次尝试更改 Windows cmd当前目录:

os.system('cd newPath')

但是,这显然不起作用,因为在执行cd newPath命令之后,Windows cmd当前目录被重置(因为我不会在下一次调用{{{I}时使用相同的Windows命令shell 1}})。

是否可以为Windows cmd shell创建单独的当前工作目录? (与实际当前工作目录分开)。

3 个答案:

答案 0 :(得分:7)

subprocess模块旨在取代os.system

除此之外,它还为您提供subprocess.Popen(),它使用cwd参数指定生成进程的工作目录(完全符合您的情况)。

请参阅:http://docs.python.org/library/subprocess.html

替换os.system的示例用法:

p = subprocess.Popen("yourcmd" + " yourarg", shell=True, cwd="c:/your/path")
sts = os.waitpid(p.pid, 0)[1]

答案 1 :(得分:1)

如果它只能在Windows上运行,可能有一种方法:

os.system('start /d newPath cmd')

答案 2 :(得分:1)

当您使用os.system时,您不会重复使用相同的命令shell,而是为每个请求生成一个新的命令shell。这意味着您实际上无法预期其中的更改会在调用之间传播。

您可以编写一个包装器,它将始终在启动命令之前更改为您想要的目录。