我试图用python创建一个简单的脚本,它本质上是一个shell终端。它将反复请求输入命令,并尝试执行给定的操作系统命令。我不知道的是,如何让Python“记住”执行的命令。你知道吗
我的意思示例:
ls
cd exampledir
exampledir
的内容由于命令序列是ls
>;cd exampledir
>;ls
,我希望程序返回exampledir的内容,但是两个ls
命令的输出是相同的。你知道吗
有没有办法让Python以某种方式“记住”已执行的命令,并在前一个命令的基础上执行下一个命令?你知道吗
我知道你可以用cd exampledir && ls
之类的东西,但这不是我要找的。命令必须像在shell终端中一样单独执行。你知道吗
迄今为止的代码:
import subprocess
while True:
cmd = input("Command to Execute: ")
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
out = p.communicate()[0]
print(out)
您必须理解的是:您需要编写shell命令的完整的解释器。这意味着:任何改变shell的状态的命令。。。一些内在的状态需要改变。他说
在“python”解释器的某个目录中。因此,当您告诉解释器更改目录时,它不能将该请求发送到一秒钟后消失的shell。他说
换句话说:你不能两全其美。要么将所有命令下传到子进程中;导致构成问题的问题。或者你的“翻译”自己做“所有的工作”。他说
我要说的是:正如你可能已经猜到的,写一个“shell”是一项复杂的任务。你凭什么认为你应该重新发明那个轮子?他说
如果使用
cd
模块subprocess
,函数将运行,但运行的python脚本的路径不会更改,你可以做的是:
这将更改您正在运行的python脚本的路径,然后您可以
ls
获得不同的输出。他说相关问题 更多 >
编程相关推荐