Skip to main content
 首页 » 编程设计

python之如何将输出重定向到客户端

2025年05月04日13birdshome

我是一个相对较新的 Python 程序员,我创建了这个 XMLRPC 服务器函数如下:

def shell(self, command, username): 
    if username in loggedIn: 
        return os.system(command) 
    else: 
        string = time.asctime() , " not logged in" 
        string = "".join(string) 
        return string 

对于客户端,我写了

command = raw_input ("$ ") 
if command == "exit": 
    exit() 
else: 
    server.shell(command, username) 

但是,当我在客户端程序中运行命令时,输出将出现在服务器窗口而不是客户端窗口中,如下所示:

#client side 
$ ls 
 
#server side 
#some results 
localhost - - [14/Feb/2013 14:26:25] "POST /RPC2 HTTP/1.0" 200 - 

并且 cd 命令也被破坏了(即即使发出命令我也无法更改到其他目录)。有什么办法可以做到吗?如果可以,怎么做?

请您参考如下方法:

os.system 不会将输出返回到命令行,只会返回代码。如果你想捕获 stdout/stderr,你必须使用 subprocess.Popen。然后,您还可以提供一个工作目录来执行您的命令(使用 cwd 参数)。据我所知,cd 可能在 shell 中工作,但不会更改 python 实例的工作目录。因此下一个调用将不会在您更改到的目录中运行。将 Popen 与 cwd 一起使用应该可以。