2016-05-05 2 views
-1

Ich kann eine Ausgabeanweisung in einer einzelnen Zeile von CLI nicht drucken. Die Linie gliedert sich in 3 Zeilen. Ich versuchte es mit der Druckfunktion zu drucken und versuchte dann mit einem Komma wie print "......", drucken und jetzt verwende ich format Stil, aber keiner von ihnen funktioniert.So drucken Sie eine Anweisung in einer einzelnen Zeile

Könnte jemand bitte einen Blick darauf werfen.

Unten ist mein Code:

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 

Unten ist mein Ausgang:

screenshot

ich die Ausgabe in einer einzigen Zeile benötigen.

Antwort

0

Die Werte self.srcWc und self.tgtWc sind bereits Zeichenfolgen und scheinen \n Zeilenvorschubzeichen am Ende jeder Zeichenfolge zu enthalten.

Sie können die Newline mit der Zeichenfolge strip() Methode entfernen, die alle führenden oder nachfolgenden Leerzeichen entfernt. Versuchen Sie etwas wie:

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

Nach Zugabe von Streifen() am Ende des self.srcWc und self.tgtWc Ich habe dieses Zeilenumbruchproblem beseitigt. Danke, dass du mir geholfen hast, dieses Problem sieht jetzt sehr einfach aus, aber als ich so einen riesigen Code schrieb, konnte ich nicht herausfinden, dass \ n an diese Variable angehängt ist. Ich bin jetzt ein glücklicher Mann, vielen Dank. – Kalyan

+0

Dann sollten Sie diese Antwort als akzeptiert markieren, damit diese Frage nicht mehr als ungelöst erscheint. Danke im Voraus. – tripleee

0

möchten Sie möglicherweise alle Zeilenumbruch entfernen, bevor Sie es ausdrucken. z.B:

>>> 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

Im Allgemeinen wird das Tupel von Ausgangszeichenfolgen über die Popen.communicate() Verfahren erhalten wird enthalten jeweils eine oder mehr Zeilen mit Zeilenende-Zeichen enden. Eine einfache Möglichkeit, dies in eine Liste von Zeilen zu zerlegen und entfernen Sie die Zeilenumbrüche ist die Verwendung der String-Methode splitlines(). Um es auf den stdoutdata in Ihrem Beispiel erfasst, die die angegebenen Linien im folgenden anhand der folgenden im Code ändern:

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

und

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