使用python更改终端中的目录

时间:2016-03-07 11:53:12

标签: python chdir

我正在编写一个简单的脚本来将当前的工作目录更改为其他目录。以下脚本可以正常运行,直到程序终止,然后我回到我的主目录。

#!/usr/bin/python

import os

if __name__ == '__main__':
    os.chdir("/home/name/projects/python")
    os.system("pwd")
    print 'dir changed'

输出是:

bash:~$ python chdir.py
/home/name/projects/python
dir changed
bash:~$ pwd
/home/name

我希望在程序退出后,目录更改仍然存在。任何想法怎么做?

修改: 我真正想要做的是:我经常使用这个目录,而不是每次打开终端时都执行cd <path>,我只需编写./progname并更改目录。

3 个答案:

答案 0 :(得分:10)

如果您希望在程序退出后仍保留目录更改。 您可以使用os.system("/bin/bash")结束python脚本,这将使您进入新目录中的bash shell。

#!/usr/bin/python
import os
if __name__ == '__main__':
    os.chdir("/home/name/projects/python")
    os.system("pwd")
    os.system("/bin/bash")

对于评论中提出的需求“我经常使用此目录,而不是每次打开终端时都使用cd <path>,我只需编写./progname并更改目录”
我建议使用bash别名来改变目录:

bash:~$ alias mycd='cd /home/name/projects/python'

并在bash shell中使用此别名以更改目录:

bash:~$ mycd

您可以将此别名添加到.bashrc - 这样您就可以每次都使用此别名。

答案 1 :(得分:0)

import os
os.system('cd /home/name/projects/python')

答案 2 :(得分:0)

此答案与已接受的答案完全相同,它可以解决问题,它没有增加任何价值,但处理方式却有所不同。我认为这个答案可能会增加解释和替代实施的价值。你可以决定。

好的,抱歉大喊大叫。

您应该只编辑routes.MapRoute( name: "Browse", url: "{controller}/Browse/{departmentId}", // this does not compile, just want to explain what I want... defaults: new { action = "Browse", new ComplexVM(departmentId) }); 文件。真的很简单。触摸创建文件,然后打开功能将其打开。在您的终端中:

.bash_profile

这将打开“文本编辑”。这样创建快捷方式,我将其放在文件末尾:

touch ~/.bash_profile; open ~/.bash_profile

然后运行此命令以更新您的alias cdd="cd ~/frequent/my-directory" 文件。 (或者关闭并重新打开终端,如果您愿意的话。)

.bash_profile

现在,您只需运行上述快捷方式:

source ~/.bash_profile

这将切换目录,而击键次数更少!

Macbook-Spen:~ spen$ cdd

来源: