打印输出python子进程

时间:2012-09-16 16:11:55

标签: python printing subprocess

进入python两天后,我正在努力做一些简单的事情但是还在挣扎。

当我使用ls作为示例命令输入运行下面的脚本时,ssh会提示我输入密码,然后它会吐出这个:

<__main__.sshcommand object at 0x7fd0d1136b50>

如果我在sshcommand类中硬设置命令(例如用'ls'替换命令),并打印它,它就会很好。

提前感谢所有建议。

import subprocess

class sshcommand(object):
    def __init__(self, command):
        subprocess.check_output(['ssh', 'localhost', command]).splitlines()

command = raw_input("command> ")

print sshcommand(command)

2 个答案:

答案 0 :(得分:4)

问题是您的代码不会以任何方式存储或返回结果。

这真的需要成为一个班级吗?如果没有,它作为一个函数更简单:

import subprocess

def sshcommand(command):
    return subprocess.check_output(['ssh', 'localhost', command]).splitlines()

command = raw_input("command> ")
print sshcommand(command)

如果绝对必须是一个班级:

import subprocess

class sshcommand(object):
    def __init__(self, command):
        self.result = subprocess.check_output(['ssh', 'localhost', command]).splitlines()

    def __str__(self):
        return self.result

command = raw_input("command> ")
print sshcommand(command)

答案 1 :(得分:1)

在班级上定义__str__方法。例如,你可以写

import subprocess

class sshcommand(object)
    def __init__(self, command):
        self.command = command
        subprocess.check_output(['ssh', 'localhost', command]).splitlines()

    def __str__(self):
        return 'ssh localhost "%s"' % command

command = raw_input("command> ")

print '%s' % sshcommand('foo bar')

打印

  
    

ssh localhost“foo bar”