我正在使用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创建单独的当前工作目录? (与实际当前工作目录分开)。
答案 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。这意味着您实际上无法预期其中的更改会在调用之间传播。
您可以编写一个包装器,它将始终在启动命令之前更改为您想要的目录。