像在shell命令中一样cd来更改工作目录。
如何在Python中更改当前的工作目录?
#1楼
这是上下文管理器更改工作目录的示例。 它比其他地方提到的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)
例
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.
#2楼
正如其他人已经指出的那样,以上所有解决方案仅会更改当前进程的工作目录。 当您返回Unix shell时,这将丢失。 如果不顾一切,您可以使用以下可怕的方法在Unix上更改父shell目录:
def quote_against_shell_expansion(s):
import pipes
return pipes.quote(s)
def put_text_back_into_terminal_input_buffer(text):
# use of this means that it only works in an interactive session
# (and if the user types while it runs they could insert characters between the characters in 'text'!)
import fcntl, termios
for