【发布时间】:2017-07-29 03:40:08
【问题描述】:
有谁知道有人会如何使用 Python 来更改用户所在的当前目录?
我目前正在编写 Python 脚本。用户将在终端/终端模拟器中使用此脚本。当满足某些条件时,脚本会将用户移动到正确的目录。我遇到的问题是我可以移动 Python 脚本的工作目录,但是一旦脚本退出,用户仍然在他们运行脚本的目录中。关于如何实现这一点的任何想法?
【问题讨论】:
标签: python directory subprocess cd
有谁知道有人会如何使用 Python 来更改用户所在的当前目录?
我目前正在编写 Python 脚本。用户将在终端/终端模拟器中使用此脚本。当满足某些条件时,脚本会将用户移动到正确的目录。我遇到的问题是我可以移动 Python 脚本的工作目录,但是一旦脚本退出,用户仍然在他们运行脚本的目录中。关于如何实现这一点的任何想法?
【问题讨论】:
标签: python directory subprocess cd
你可以使用文件的绝对路径,或者
【讨论】:
抱歉,您无法使用以正常方式启动的程序执行此操作。至少,您不能在符合 POSIX 的操作系统中。
当您以正常方式运行脚本或程序时,它会在新进程中运行,当然,在新进程中所做的任何更改都不会影响父进程:子进程从其父进程继承环境,父进程环境不会受到孩子对其环境所做的任何改变的影响。
有一种解决方法:您可以将cd 命令放入脚本中,然后source 该脚本在当前进程中执行脚本,而不是在新进程中运行它。我猜你的 Python 代码可以创建一个小的 shell 脚本来更改到所需的目录,但你仍然需要用户 source 该脚本来进行实际的目录更改。当我需要这样做以供自己使用时,我只需将所需的cd 命令打印到 shell,这样我就可以轻松地复制和粘贴它,然后点击 Enter。 :)
查看here 了解更多关于cd 为何如此的详细信息。
【讨论】:
这可能不是完美的解决方案,但它可能很有用。 使用此命令,您将打开一个新的 cmd 提示,其中包含路径。 pd:仅适用于 windows 用户
import subprocess
import os
os.chdir('the\path\to\your\dir')
subprocess.run("start cmd", shell=True)
【讨论】: