2015-05-18 6 views
1

Я пытаюсь записать статус своего диска в pdf. Проблема в том, что он не записывает несколько строк: текст для каждой буквы идет вертикально.Python Reportlab несколько строк

import subprocess 
from reportlab.pdfgen import canvas 

p = subprocess.Popen('df -h', stdout=subprocess.PIPE, shell=True) 
(disk, err) = p.communicate() 
print disk 

def hello(disk): 
      height= 700 
      c = canvas.Canvas("diskreport.pdf") 
      c.drawString(200,800,"Diskreport") 
      for line in disk: 
        c.drawString(100,height,line.strip()) 
        height = height - 25 
      c.showPage() 
      c.save() 
hello(disk) 

ответ

2

Вы не зацикливание над линий в данных, но над символов. Пример:

>>> data="""a 
... b 
... line 3""" 
>>> # this will print each character (as in your code) 
... for line in data: print line 
... 
a 


b 


l 
i 
n 
e 

3 
>>> 
>>> # split into lines instead 
... for line in data.split('\n'): print line 
... 
a 
b 
line 3 
>>> 

Так что в вашем коде вы добавляете .split('\n') to your for` петлю, чтобы произвести это:

for line in disk.split('\n'): 
Смежные вопросы