在python中执行相关的os命令

2024-09-27 21:32:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python创建一个简单的脚本,它本质上是一个shell终端。它将反复请求输入命令,并尝试执行给定的操作系统命令。我不知道的是,如何让Python“记住”执行的命令。你知道吗

我的意思示例:

  1. 用户输入ls
  2. Python打印当前目录的内容
  3. 下一个用户输入cd exampledir
  4. Python执行命令
  5. {cd1}
  6. Python打印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)

Tags: 用户命令gt脚本cmdtrue终端内容
2条回答

您必须理解的是:您需要编写shell命令的完整的解释器。这意味着:任何改变shell的状态的命令。。。一些内在的状态需要改变。他说

在“python”解释器的某个目录中。因此,当您告诉解释器更改目录时,它不能将该请求发送到一秒钟后消失的shell。他说

换句话说:你不能两全其美。要么将所有命令下传到子进程中;导致构成问题的问题。或者你的“翻译”自己做“所有的工作”。他说

我要说的是:正如你可能已经猜到的,写一个“shell”是一项复杂的任务。你凭什么认为你应该重新发明那个轮子?他说

如果使用cd模块subprocess,函数将运行,但运行的python脚本的路径不会更改,
你可以做的是:

import os
if # condition where cd command used:
  os.chdir("path/to/new/dir")

这将更改您正在运行的python脚本的路径,然后您可以ls获得不同的输出。他说

相关问题 更多 >

    热门问题