【问题标题】:Is it possible to maintain the python working directory that I changed before [closed]是否可以维护我之前更改的python工作目录[关闭]
【发布时间】:2020-01-17 01:50:30
【问题描述】:

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

【问题讨论】:

  • 维护我之前更改的工作目录是什么意思?
  • 我的意思是当我重新打开 python 时。当我重新打开 python 时,我总是写 import os, os.chdir(Path)。
  • 啊,我不知道这是否可能。为什么需要这样做?
  • 我只是想改变原来的工作目录
  • 使用os.chdir 可以做到这一点,对吧?结案了吗?

标签: python


【解决方案1】:

不。这是操作系统的问题: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

这样您就不必每次都记住语法。但实际上,没有一些可怕的特定于平台的恶作剧(例如:Changing a process's current working directory programmatically),但如果你重视你的理智,相信我,你真的不想走那条路。学习如何在操作系统的进程模型中工作会比尝试解决它要好得多,即使它感觉很不稳定。


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

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

【讨论】:

  • 感谢您的帮助
猜你喜欢
  • 2022-08-19
  • 1970-01-01
  • 2017-10-05
  • 2014-01-14
  • 2022-11-30
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多