使用python更改终端中的目录

使用python更改终端中的目录,python,chdir,Python,Chdir,我正在编写一个简单的脚本,将当前的工作目录更改为其他目录。下面的脚本可以正常工作,直到程序终止,然后返回主目录 #!/usr/bin/python import os if __name__ == '__main__': os.chdir("/home/name/projects/python") os.system("pwd") print 'dir changed' import os os.system('cd /home/name/projects/pyth

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

#!/usr/bin/python

import os

if __name__ == '__main__':
    os.chdir("/home/name/projects/python")
    os.system("pwd")
    print 'dir changed'
import os
os.system('cd /home/name/projects/python')
#!/usr/bin/python
import os
if __name__ == '__main__':
    os.chdir("/home/name/projects/python")
    os.system("pwd")
    os.system("/bin/bash")
输出为:

bash:~$ python chdir.py
/home/name/projects/python
dir changed
bash:~$ pwd
/home/name
我希望即使程序退出后,目录更改仍保持不变。有什么办法吗

编辑
我真正想做的是:我经常使用这个目录,而不是每次打开终端时都做
cd
,我只是写
/progname
,它会更改目录。

如果你想在程序退出后仍保留目录更改。
#!/usr/bin/python

import os

if __name__ == '__main__':
    os.chdir("/home/name/projects/python")
    os.system("pwd")
    print 'dir changed'
import os
os.system('cd /home/name/projects/python')
#!/usr/bin/python
import os
if __name__ == '__main__':
    os.chdir("/home/name/projects/python")
    os.system("pwd")
    os.system("/bin/bash")
您可以使用
os.system(“/bin/bash”)
结束python脚本,这将使您留在新目录中的bash shell中

#!/usr/bin/python

import os

if __name__ == '__main__':
    os.chdir("/home/name/projects/python")
    os.system("pwd")
    print 'dir changed'
import os
os.system('cd /home/name/projects/python')
#!/usr/bin/python
import os
if __name__ == '__main__':
    os.chdir("/home/name/projects/python")
    os.system("pwd")
    os.system("/bin/bash")
对于您在评论中提出的需求“我经常使用此目录,每次打开终端时,我都只写
/progname
,而不是读
cd
,它会更改目录”
我建议使用bash别名,它将更改目录:

bash:~$ alias mycd='cd /home/name/projects/python'
bash:~$ mycd
并在bash shell中使用此别名以更改目录:

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

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

如果有人想在没有python的情况下使用此别名,则只需使用
.bash\u配置文件
文件即可

步骤:

  • 在您的.bash_配置文件中键入此内容。您可以使用pico打开此文件
  • 然后创建一个快捷方式(称为别名),你可以做任何你想做的事情
  • 然后从
    .bash\u配置文件中获取源文件
  • 现在,您只需运行前面提到的快捷方式,这将切换您的目录,只需更少的按键

    Macbook-Spen:~ spen$ cdd
    Macbook-Spen:my-directory spen$ 
    

    资料来源:


    你为什么要用Python做这件事?这是一个更大项目的一部分。哦,我明白你想做什么了。Python实际上是在其脚本范围内更改dir,但不是在终端上scope@RafaelCardoso确切地你知道怎么做吗?我想你应该使用一种更专注于bash的脚本语言为什么要这样做?如果你想在projects/python目录下运行另一个命令,它将在这个os.system('cd/home/name/projects/python')之后运行,你可以使用os.system('other command')。它只是一个更大项目的一小部分。我知道在那之后它会工作,我需要在程序退出后保留目录更改。这样想:我经常使用这个目录,而不是每次打开终端时都使用ind-cd,我只需写./progname,它就会改变目录。这很有效!非常感谢你。你能解释一下最后一个命令在做什么吗?它是在创建terminal的新实例还是什么?它将打开一个新的bash shell作为子进程,因此它使用新目录。它回答了您的问题,但我不确定它对大型项目有多大用处。有关更多信息,请参阅。我知道可以通过使用bash别名来完成,我只是想知道如何使用python来完成。两种解决方案都有效。再次感谢!请注意@KrishanuKonar,这实际上并没有改变当前bash会话的目录。它正在您想要的目录中创建一个新的bash进程。萨缪洛·马利适时地指出:“Python不可能满足您的实际要求,但bash非常容易满足您的要求。”。