我正在使用os.system()执行Windows命令行shell。我想更改Windows当前目录。这里有一种方法:
os.chdir('newPath')但是chdir()还将更改实际的Python工作目录。我不想更改实际的Python工作目录,因为我希望脚本的其他部分在原来的当前工作目录中运行。我只想更改Windows当前工作目录。换句话说:我希望os.system()命令在一个当前工作目录(Windows当前工作目录)中运行,而其他任何命令都应该在另一个当前工作目录(实际的Python工作目录)中运行。
下面是另一种只更改Windows当前目录的的尝试:
os.system('cd newPath')但是,这显然不起作用,因为在执行cd newPath命令之后,Windows当前目录就会被重置(因为在下一次调用os.system()时,我不会使用相同的os.system()命令shell )。
是否可以为Windows提供一个单独的当前工作目录?(与实际的当前工作目录分开)。
发布于 2011-02-03 00:01:15
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]发布于 2011-02-02 23:52:14
如果它只需要在Windows上工作,一种方法可能是:
os.system('start /d newPath cmd')发布于 2011-02-02 23:53:11
当您使用os.system时,您不会重用相同的命令shell,而是为每个请求生成一个新的命令shell。这意味着您实际上不能期望它中的更改在调用之间传播。
不过,您可以编写一个包装器,它总是在启动命令之前更改到您想要的目录。
https://stackoverflow.com/questions/4881312
复制相似问题