如何在Python中更改目录(cd)?

cd在shell命令中更改工作目录。

如何在Python中更改当前工作目录?


您可以通过以下方式更改工作目录:

import os

os.chdir(path)

使用此方法时有两种最佳做法:

  • 在无效路径上捕获异常(WindowsError,OSError)。 如果引发异常,请不要执行任何递归操作,特别是破坏性操作。 他们将在旧的道路上运作,而不是新的道路。
  • 完成后返回到旧的目录。 这可以通过将你的chdir调用包装在上下文管理器中以异常安全的方式完成,就像Brian M. Hunt在他的回答中所做的那样。
  • 更改子流程中的当前工作目录不会更改父进程中的当前工作目录。 Python解释器也是如此。 您不能使用os.chdir()更改调用进程的CWD。


    以下是更改工作目录的上下文管理器的示例。 它比其他地方提到的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.
    

    我会这样使用os.chdir

    os.chdir("/path/to/change/to")
    

    顺便说一句,如果你需要找出你当前的路径,使用os.getcwd()

    更多在这里

    链接地址: http://www.djcxy.com/p/54691.html

    上一篇: How do I change directory (cd) in Python?

    下一篇: catching an IOError in python