如何在一行中打印语句

时间:2016-05-05 13:05:57

标签: python printing subprocess

我无法在cli的单行中打印输出语句。该线分为3行。我尝试使用打印功能打印它,然后尝试使用逗号print "......",进行打印,现在我使用的是format样式,但它们都不起作用。

请有人看看这个。

以下是我的代码:

self.length = len(self.src_mnt)

for copy in range(0, self.length):
    self.src_mnt[copy] = self.src_mnt[copy].replace('\/','/')
    self.tgt_mnt[copy] = self.tgt_mnt[copy].replace('\/','/')

    self.getSrcCount   = 'cd'+' '+self.src_mnt[copy]+';'+' '+'ls -l | wc -l'
    self.srcWord       = subprocess.Popen(self.getSrcCount, shell=True,
                                          stdout=subprocess.PIPE,)
    self.srcWc         = self.srcWord.communicate()[0]

    self.getTgtCount   = 'cd'+' '+self.tgt_mnt[copy]+';'+' '+'ls -l | wc -l'
    self.tgtWord       = subprocess.Popen(self.getTgtCount, shell=True,
                                          stdout=subprocess.PIPE,)
    self.tgtWc         = self.tgtWord.communicate()[0]

    if self.srcWc == self.tgtWc:
       self.srcMsg = "Copied: %s files out of %s from %s to %s" % (
            str(self.tgtWc), str(self.srcWc), self.src_mnt[copy], self.tgt_mnt[copy])
       print self.srcMsg

以下是我的输出:

screenshot

我需要输出一行。

3 个答案:

答案 0 :(得分:0)

self.srcWcself.tgtWc已经是字符串,并且在每个字符串的末尾看起来都有\n个换行符。

您可以使用字符串strip()方法删除换行符,该方法将删除任何前导或尾随空格。尝试类似:

    self.srcWord          = subprocess.Popen(self.getSrcCount, shell=True, stdout=subprocess.PIPE,)
    self.srcWc            = self.srcWord.communicate()[0].strip()

答案 1 :(得分:0)

您可能希望在打印之前删除所有换行符。 e.g:

>>> s = 'Abc \n new-line'
>>> print 'Hi %s' % s
Hi Abc 
new-line
>>> s = s.replace('\n', '')
>>> print 'Hi %s' % s
Hi Abc  new-line

答案 2 :(得分:0)

通常,通过Popen.communicate()方法获得的输出字符串的元组将包含一行或多行以换行符结尾的行。将其分解为行并删除换行符的简单方法是使用字符串方法splitlines()。要将其应用于示例中捕获的stdoutdata,请将代码中下方的指示行更改为以下内容:

    self.srcWc         = self.srcWord.communicate()[0].splitlines()[0]

    self.tgtWc         = self.tgtWord.communicate()[0].splitlines()[0]