2016-05-05 109 views
-1

我无法从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

我需要在一个单一的线输出。

回答

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

在self.srcWc的末尾添加条()和后self.tgtWc我摆脱了那个换行符问题。感谢您的帮助,这个问题现在看起来很简单,但是当我写这么大的代码时,我无法弄清楚\ n是否是该变量的后缀。我现在是一个快乐的人,非常感谢你。 – Kalyan

+0

然后,您应该将此答案标记为已接受,以便此问题不再出现为未解决问题。提前致谢。 – tripleee

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 
0

通常经由Popen.communicate()方法获得的输出串的元组将每个包含用换行符结束的一个或多个行。一个简单的方法来将其分解成行列表并删除换行的方法是使用字符串方法splitlines()。将其应用到在例如拍摄到的stdoutdata,改变下面的表示的线在代码如下:

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

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