Python 如何从paramiko中的stdout中删除坏字符

Python 如何从paramiko中的stdout中删除坏字符,python,shell,unicode,paramiko,Python,Shell,Unicode,Paramiko,我使用下面的脚本在shell中运行一些命令。 基本场景是,我有一个服务器应用程序,可以使用ssh命令通过远程shell连接到该应用程序。我正在使用paramiko来模拟这一点,但问题是我何时运行以下脚本- import sys #sys.stderr = open('/dev/null') # Silence silly warnings from paramiko import paramiko as pm from paramiko import AutoAddPolicy sy

我使用下面的脚本在shell中运行一些命令。 基本场景是,我有一个服务器应用程序,可以使用ssh命令通过远程shell连接到该应用程序。我正在使用paramiko来模拟这一点,但问题是我何时运行以下脚本-

import sys
#sys.stderr = open('/dev/null')       # Silence silly warnings from paramiko
import paramiko as pm
from paramiko import AutoAddPolicy
sys.stderr = sys.__stderr__
import os

class AllowAllKeys(pm.MissingHostKeyPolicy):
    def missing_host_key(self, client, hostname, key):
        return

HOST = 'localhost'
USER = 'admin'
PASSWORD = 'admin'

client = pm.SSHClient()
#client.load_system_host_keys()
#client.load_host_keys(str(pm.AutoAddPolicy()))
client.set_missing_host_key_policy(pm.AutoAddPolicy())
client.connect(HOST, username=USER, password=PASSWORD, port=2222)

channel = client.invoke_shell()
stdin = channel.makefile('wb')
stdout = channel.makefile('rb')

stdin.write('''
cd /Realms
exit
''')

for line in stdout:    
    print line.strip('\n')

stdout.close()
stdin.close()
client.close()
执行此命令时会显示许多错误字符,如下所示-

←[39m←[1madmin←[0m@pjajoo-t420:/>
←[39m←[1madmin←[0m@pjajoo-t420:/> cd /Realms
←[39m←[1madmin←[0m@pjajoo-t420:/Realms> exit
有谁能帮我去掉这些坏字符,这样对我的调试和回答验证有帮助吗

注意:我使用的是Windows 7。

答案可在以下位置找到-

我在上面的代码中使用了以下几行代码,它对我很有用-

import re

for line in stdout:
    print (re.compile(r'\x1b[^m]*m')).sub('', line)

它删除了所有的坏字符。

它们不是坏字符,而是漂亮的字符…:)好的…如何排除它们?您可以尝试查找有关paramiko的信息,检查如何禁用ansi转义。我没有要测试的windows,也没有与paramiko一起工作。既然您已经将paramiko导入为pm,并且所有进一步的引用都使用了pm.AutoAddPolicy,为什么您要从paramiko导入AutoAddPolicy?