【问题标题】:Python change users' directoryPython更改用户目录
【发布时间】:2017-07-29 03:40:08
【问题描述】:

有谁知道有人会如何使用 Python 来更改用户所在的当前目录?

我目前正在编写 Python 脚本。用户将在终端/终端模拟器中使用此脚本。当满足某些条件时,脚本会将用户移动到正确的目录。我遇到的问题是我可以移动 Python 脚本的工作目录,但是一旦脚本退出,用户仍然在他们运行脚本的目录中。关于如何实现这一点的任何想法?

【问题讨论】:

    标签: python directory subprocess cd


    【解决方案1】:

    你可以使用文件的绝对路径,或者

    os.chdir(path)

    【讨论】:

    • 这只是改变了 Python 的工作目录。我想更改用户所在的目录。当 Python 脚本退出时,用户应该位于与运行脚本不同的目录中。
    • 那你需要一个 shell 脚本,而不是 Python 脚本
    • 是的,我想我必须把它变成一个 shell 脚本。谢谢!
    【解决方案2】:

    抱歉,您无法使用以正常方式启动的程序执行此操作。至少,您不能在符合 POSIX 的操作系统中。

    当您以正常方式运行脚本或程序时,它会在新进程中运行,当然,在新进程中所做的任何更改都不会影响父进程:子进程从其父进程继承环境,父进程环境不会受到孩子对其环境所做的任何改变的影响。

    有一种解决方法:您可以将cd 命令放入脚本中,然后source 该脚本在当前进程中执行脚本,而不是在新进程中运行它。我猜你的 Python 代码可以创建一个小的 shell 脚本来更改到所需的目录,但你仍然需要用户 source 该脚本来进行实际的目录更改。当我需要这样做以供自己使用时,我只需将所需的cd 命令打印到 shell,这样我就可以轻松地复制和粘贴它,然后点击 Enter。 :)

    查看here 了解更多关于cd 为何如此的详细信息。

    【讨论】:

      【解决方案3】:

      这可能不是完美的解决方案,但它可能很有用。 使用此命令,您将打开一个新的 cmd 提示,其中包含路径。 pd:仅适用于 windows 用户

      import subprocess
      import os
      os.chdir('the\path\to\your\dir')
      subprocess.run("start cmd", shell=True)
      

      【讨论】:

        猜你喜欢
        • 2021-10-12
        • 1970-01-01
        • 2013-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-04
        • 2015-05-26
        相关资源
        最近更新 更多