首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:更改Windows命令行shell当前目录而不更改实际当前目录是可能的吗?

Python:更改Windows命令行shell当前目录而不更改实际当前目录是可能的吗?
EN

Stack Overflow用户
提问于 2011-02-02 23:49:11
回答 3查看 3.4K关注 0票数 5

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

代码语言:javascript
运行
复制
os.chdir('newPath')

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

下面是另一种只更改Windows当前目录的的尝试:

代码语言:javascript
运行
复制
os.system('cd newPath')

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

是否可以为Windows提供一个单独的当前工作目录?(与实际的当前工作目录分开)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-03 00:01:15

subprocess模块旨在取代os.system

除其他外,它还为您提供了subprocess.Popen(),它接受一个cwd参数来为生成的进程指定工作目录(对于您的情况而言)。

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

示例用法替换os.system

代码语言:javascript
运行
复制
p = subprocess.Popen("yourcmd" + " yourarg", shell=True, cwd="c:/your/path")
sts = os.waitpid(p.pid, 0)[1]
票数 7
EN

Stack Overflow用户

发布于 2011-02-02 23:52:14

如果它只需要在Windows上工作,一种方法可能是:

代码语言:javascript
运行
复制
os.system('start /d newPath cmd')
票数 1
EN

Stack Overflow用户

发布于 2011-02-02 23:53:11

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

不过,您可以编写一个包装器,它总是在启动命令之前更改到您想要的目录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4881312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档