首页 > 解决方案 > 是否可以维护我之前更改的python工作目录

问题描述

我知道如何通过 os.chdir(Path) 更改工作目录。但我想维护我之前更改的工作目录。是否可以???

标签: python

解决方案


没有。这是操作系统的问题:Python 子进程正在更改其工作目录,但这不会影响其父进程(例如您从中启动它的 Bash shell)。

如果 Python 进程旨在更改您的目录 - 假设您正在编写自己的改进cd程序 - 您可以执行以下操作:

  • 让您的程序打印要更改为的目录的名称
  • 让您的 shell 本身更改为程序的输出

例如,假设您有一个 Python 程序,例如:

#!/usr/bin/env python

print('/tmp/pancakes')

你可以这样从你的 shell 运行它:

$ pwd
/tmp
$ cd $(python mycd.py)
$ pwd
/tmp/pancakes

看?现在您已更改到新目录!或者,您可以创建一个方便的别名,例如:

$ pwd
/tmp
$ alias mycd='cd $(python mycd.py)'
$ mycd
$ pwd
/tmp/pancakes

这样您就不必每次都记住语法。但实际上,没有一些可怕的特定于平台的恶作剧(例如:以编程方式更改进程的当前工作目录),但如果你重视你的理智,相信我,你真的不想走那条路。你最好学习如何在你的操作系统的进程模型中工作,即使它感觉很不稳定,也比试图解决它要好得多。


编辑:自发布以来,您已经添加了一些明确的答案,这确实改变了您的要求。这可能会更容易一些,但我仍然强烈建议你不要走这条路。

  • 考虑 Python 有一个启动文件
  • 考虑一下 Python 有退出处理程序
  • 想知道如果退出处理程序将您当前的工作目录名称写入文件会发生什么。
  • 想想如果启动文件读取该文件并更改为其中命名的目录会发生什么。
  • 意识到这可能是一个非常糟糕的主意,因为在您启动 Python 的一半时间里,它会在与您想象的不同的目录中工作。如果你跑步会发生什么import foo?谁知道!让我们掷骰子找出答案吧!

推荐阅读