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

sna*_*ile 5 python cmd working-directory

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

os.chdir('newPath')
Run Code Online (Sandbox Code Playgroud)

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

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

os.system('cd newPath')
Run Code Online (Sandbox Code Playgroud)

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

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

pay*_*yne 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]
Run Code Online (Sandbox Code Playgroud)

  • `retcode = subprocess.call(["yourcmd","arg1","arg2"],shell = True,cwd ="c:/ your/path")` (3认同)