[Tutor] Add newline's, wrap, a long string

David david at abbottdavid.com
Wed Apr 29 00:44:41 CEST 2009


vince spicer wrote:
> first, grabbing output from an external command try:
> 
> import commands
> 
> USE = commands.getoutput('grep USE /tmp/comprookie2000/emege_info.txt 
> |head -n1|cut -d\\"-f2')
>  
> then you can wrap strings,
> 
> import textwrap
> 
> Lines = textwrap.wrap(USE, 80) # return a list
> 
> so in short:
> 
> import commands, textwrap
> data = textwrap.wrap(commands.getoutput('my command'), 80)
> 
> 
> 
> Vince
> 
> 
> 
> 
> 
> On Tue, Apr 28, 2009 at 3:43 PM, David <david at abbottdavid.com 
> <mailto:david at abbottdavid.com>> wrote:
> 
>     I am getting information from .txt files and posting them in fields
>     on a web site. I need to break up single strings so they are around
>     80 characters then a new line because when I enter the info to the
>     form on the website it has fields and it errors out with such a long
>     string.
> 
>     here is a sample of the code;
> 
>     #!/usr/bin/python
>     import subprocess
>     import os
> 
>     u_e = subprocess.Popen(
>     'grep USE /tmp/comprookie2000/emerge_info.txt |head -n1|cut
>     -d\\"-f2', shell=True, stdout=subprocess.PIPE,)
>     os.waitpid(u_e.pid, 0)
>     USE = u_e.stdout.read().strip()
>     L = len(USE)
>     print L
>     print USE
> 
>     L returns 1337
> 
>     Here is what USE returns;
>     http://linuxcrazy.pastebin.com/m2239816f
> 
>     thanks
>     -david
>     -- 
>     Powered by Gentoo GNU/Linux
>     http://linuxcrazy.com
>     _______________________________________________
>     Tutor maillist  -  Tutor at python.org <mailto:Tutor at python.org>
>     http://mail.python.org/mailman/listinfo/tutor
> 
> 
Thanks Vince,
I could not get command to work, but I did not try very hard;
["cut: the delimiter must be a single character Try `cut --help' for 
more", 'information. head: write error: Broken pipe']

But textwrap did the trick, here is what I came up with;

#!/usr/bin/python

import subprocess
import os
import textwrap
import string

def subopen():
     u_e = subprocess.Popen(
         'grep USE /tmp/comprookie2000/emerge_info.txt |head -n1|cut 
-d\\" -f2',
         shell=True, stdout=subprocess.PIPE,)
     os.waitpid(u_e.pid, 0)
     USE = u_e.stdout.read().strip()
     L = textwrap.wrap(USE, 80) # return a list
     Lines = string.join(L, '\n')
     fname = 'usetest.txt'
     fobj = open(fname, 'w')
     fobj.write(Lines)
     fobj.close

subopen()

Here is the output;
http://linuxcrazy.pastebin.com/m66105e3

-- 
Powered by Gentoo GNU/Linux
http://linuxcrazy.com


More information about the Tutor mailing list