cd是用于更改工作目录的shell命令。
如何更改Python中的当前工作目录?
cd是用于更改工作目录的shell命令。
如何更改Python中的当前工作目录?
当前回答
下面是一个上下文管理器更改工作目录的示例。它比其他地方提到的ActiveState版本更简单,但这可以完成任务。
上下文管理器:cd
import os
class cd:
"""Context manager for changing the current working directory"""
def __init__(self, newPath):
self.newPath = os.path.expanduser(newPath)
def __enter__(self):
self.savedPath = os.getcwd()
os.chdir(self.newPath)
def __exit__(self, etype, value, traceback):
os.chdir(self.savedPath)
或者使用ContextManager尝试更简洁的等效方法(如下)。
实例
import subprocess # just to call an arbitrary command e.g. 'ls'
# enter the directory like this:
with cd("~/Library"):
# we are in ~/Library
subprocess.call("ls")
# outside the context manager we are back wherever we started.
其他回答
如果您使用spyder和love GUI,只需单击屏幕右上角的文件夹按钮,即可浏览您希望作为当前目录的文件夹/目录。完成此操作后,您可以转到spyder IDE中窗口的文件资源管理器选项卡,您可以看到那里存在的所有文件/文件夹。检查当前工作目录转到spyder IDE的控制台,只需键入
pwd
它将打印与您之前选择的路径相同的路径。
进一步了解Brian指出的方向,并基于sh(1.0.8+)
from sh import cd, ls
cd('/tmp')
print ls()
我会这样使用os.chdir:
os.chdir("/path/to/change/to")
顺便说一句,如果需要计算当前路径,请使用os.getcwd()。
更多信息请点击此处
您可以通过以下方式更改工作目录:
import os
os.chdir(path)
使用此方法时,需要遵循两个最佳实践:
捕获无效路径上的异常(WindowsError、OSError)。如果抛出异常,请不要执行任何递归操作,尤其是破坏性操作。他们将在旧的道路上运行,而不是在新的道路上。完成后返回到旧目录。这可以通过将chdir调用包装在上下文管理器中以异常安全的方式完成,就像BrianM.Hunt在回答中所做的那样。
在子流程中更改当前工作目录不会更改父流程中的当前工作目录。Python解释器也是如此。不能使用os.chdir()更改调用进程的CWD。
Path中的Path对象(PyPI上提供的第三方包,不同于pathlib)为此提供了上下文管理器和chdir方法:
from path import Path # pip install path
with Path("somewhere"):
...
Path("somewhere").chdir()