我正在研究一个简单的Python脚本,该脚本可以使用subprocess和/或os执行一些命令,效果很好。

但是,当脚本退出时,我想使用cd实际的终端机(在本例中为OS X),因此在退出时,新文件可以在已创建目录中使用。以下所有命令(subprocess.Popenos.systemos.chdir)都可以在脚本中执行我想要的操作(即它们在目标目录中执行内容),但在退出时将Terminal保留在脚本自己的目录中,而不是目标目录中。

我想避免将shell脚本写到临时文件中只是为了实现此目的,如果这仍然可行的话?

最佳答案

可悲的是没有。不允许进程更改其父进程的环境,在这种情况下,您的Python脚本是Shell的子进程。您可以通过以下方法“伪造”它:让您的Python进程设置一个新的shell(调用子进程以打开一个shell进程并将其呈现给用户,并从其自身继承修改后的环境),但这具有强制Python进程运行的缺点不断地。

这确实是shell脚本的目的.. :-)显然,有人需要编写一个更传统的shell(例如,比IPython更接近Bash),并且可以使用python作为其脚本语言。

关于python - 运行Python脚本后,在给定目录下的cd终端?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2799256/

10-12 01:22
查看更多