【问题标题】:How do you change directory in Python without creating a new instance of zsh?如何在 Python 中更改目录而不创建新的 zsh 实例?
【发布时间】:2022-01-27 23:02:22
【问题描述】:

我正在尝试编写一个程序来更改zsh 中的当前目录,而不创建zsh 的新实例。可能听起来令人困惑,但到目前为止我所尝试的应该会有所帮助。

zsh 当前位于“用户”目录中,如下所示:

$ /Users/ →

如果我在 Python 上运行以下命令:

os.system("cd projects")
os.system("zsh")

它将zsh 更改为“项目”目录:

$ /Users/ → python main.py
$ /Users/Projects/ → 

但这会创建zsh 的新实例,并且运行exit 不会关闭终端窗口。相反,我需要重新运行exit

有没有办法让 Python 在不启动另一个实例的情况下更改 zsh 中的当前目录?

【问题讨论】:

  • 似乎无法从子进程更改工作目录。检查此线程:stackoverflow.com/questions/3786678/…
  • 它不会改变你的 current shell 会话中的任何东西;你的 Python 脚本启动了一个 zsh 的新实例,是的,但是 Python 脚本还在运行,阻塞直到新的 zsh 退出,此时 os.system 返回并且你的 Python 脚本可以继续。此外,我无法重现已被代码更改的工作目录,如图所示。第一个os.system 启动一个新的shell,执行cd 命令,然后该shell 退出。由zsh 启动的 shell 仍将拥有 Python 的任何工作目录。

标签: python macos command-line terminal zsh


【解决方案1】:

您似乎正在寻找与 Python 捆绑的 os.chdir(path) 方法。

您必须将新路由(绝对或相对)设置为path 参数,它将更改您到该路由的工作路径。

【讨论】:

    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    • 2014-12-01
    • 1970-01-01
    相关资源
    最近更新 更多