gpt4 book ai didi

python - 从子进程更改父进程的目录

转载 作者:太空狗 更新时间:2023-10-29 12:14:56 27 4
gpt4 key购买 nike

我创建了一个很酷的 Python 程序,可以帮助人们以交互方式导航到其他目录。当他们到达那里时,我想让他们按 Enter 键并退出程序,将他们留在选定的目录中。但是,您总是会在 b/c 中启动的相同目录中结束,只有 python 在其中运行的子进程实际上更改了目录,而父进程的目录保持不变。

最佳答案

不是直接运行您的程序,获取包装器脚本。您的程序在完成后会向包装器脚本发出信号,指示要cd 到哪个目录。 sourced wrapper 脚本执行 cd

另一个文件浏览实用程序 Midnight Commander (mc) 解决了同样的问题。这是它的包装脚本:

MC_USER=`id | sed 's/[^(]*(//;s/).*//'`
MC_PWD_FILE="${TMPDIR-/tmp}/mc-$MC_USER/mc.pwd.$$"
/usr/bin/mc -P "$MC_PWD_FILE" "$@"

if test -r "$MC_PWD_FILE"; then
MC_PWD="`cat "$MC_PWD_FILE"`"
if test -n "$MC_PWD" && test -d "$MC_PWD"; then
cd "$MC_PWD"
fi
unset MC_PWD
fi

rm -f "$MC_PWD_FILE"
unset MC_PWD_FILE

如您所见,这定义了一个临时文件,并使用 -P 选项将该文件名传递给 mc。在 mc 退出之前,它会将所选目录写入该临时文件。此脚本读取该临时文件和 cd 到所选目录。

为了方便运行这个包装脚本,我们创建了一个 shell 别名:

alias mc=". /usr/lib/mc/bin/mc-wrapper.sh"'

稍作修改,我希望您可以在您的程序中使用它。

关于python - 从子进程更改父进程的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28997125/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com