我无法在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
以下是我的输出:
我需要输出一行。
答案 0 :(得分:0)
值self.srcWc
和self.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]