Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Best way to delimit a list?

0 views
Skip to first unread message

dannyw...@googlemail.com

unread,
May 13, 2008, 6:28:03 AM5/13/08
to
Hi - I have a list returned from popen/readlines, and am wondering how
to go about iterating over each item which was returned (rather than
currently having the whole lot returned).

so far:

>>> f=os.open("./get_hostnames").readlines

returns ['host1 host2 host3 ... hostN\n]'

i'd like to be in a position to iterate through these, grabbing each
host. I have played with transmuting to a str, and using split, and
this works, but I get the subscript brackets from the list output as
expected, as the list output is now a string literal, and this is not
what I want - and I think it's a bit long-winded to do a search 'n
replace on it - hence why I ask in the subject what's the best way.

>>> f=str(f)
>>> f.split()
["['host1","host2", ... ,"hostN\n']"]


Any help is highly appreciated

ta

dan.

casti...@gmail.com

unread,
May 13, 2008, 6:45:17 AM5/13/08
to

Bring up the Google Ring. Where you only wiggle fingers, it might pay
to get jobs at home. All we up here would have to do would be
schedule something. Make a decision is easy in talking. I think it
would be easy to centralize the time the world's at and redistribute
money. If all we'd do is normal life, this constrained, open markets
would be easy to set up. It's just illegal to talk about pricing in
2004 Microecon. classes.

dannyw...@googlemail.com

unread,
May 13, 2008, 6:46:45 AM5/13/08
to

I did indeed mean "os.popen", no "os.open"

Gabriel Genellina

unread,
May 13, 2008, 6:51:06 AM5/13/08
to pytho...@python.org
En Tue, 13 May 2008 07:28:03 -0300, <dannyw...@googlemail.com> escribió:

> Hi - I have a list returned from popen/readlines, and am wondering how
> to go about iterating over each item which was returned (rather than
> currently having the whole lot returned).
>
> so far:
>
>>>> f=os.open("./get_hostnames").readlines
>
> returns ['host1 host2 host3 ... hostN\n]'

You meant readlines(), I presume. A file acts as its own iterator:

f=os.open("./get_hostnames")
try:
for line in f:
# do something with line
finally:
f.close()

--
Gabriel Genellina

casti...@gmail.com

unread,
May 13, 2008, 6:57:35 AM5/13/08
to
> I did indeed mean "os.popen", no "os.open"- Hide quoted text -
>
> - Show quoted text -

I do indeed write a pretty fine real-time, low-bandwidth, game. It is
like real-time chess, and seen the movie, Tron. Can't the P2Ps zip up
in an hour?

dannyw...@googlemail.com

unread,
May 13, 2008, 7:14:16 AM5/13/08
to
On May 13, 11:51 am, "Gabriel Genellina" <gagsl-...@yahoo.com.ar>
wrote:

>
> You meant readlines(), I presume. A file acts as its own iterator:
>
> f=os.open("./get_hostnames")
> try:
> for line in f:
> # do something with line
> finally:
> f.close()
>
> --
> Gabriel Genellina

Hi - thank you for your reply.

I meant:

f=os.popen("./get_hostnames").readlines()

So f is a list, rather than a file object, of which os.open would have
returned (my initial typo redirected the missive of this post, sorry!)

cheers


Gabriel Genellina

unread,
May 13, 2008, 7:18:59 AM5/13/08
to pytho...@python.org
En Tue, 13 May 2008 07:46:45 -0300, <dannyw...@googlemail.com> escribió:
> On May 13, 11:28 am, dannywebs...@googlemail.com wrote:

>> Hi - I have a list returned from popen/readlines, and am wondering how
>> to go about iterating over each item which was returned (rather than
>> currently having the whole lot returned).
>>

>> >>> f=os.open("./get_hostnames").readlines


>
> I did indeed mean "os.popen", no "os.open"

Ouch, replace open with popen an my example is valid (but to get the
meaning I intended to write, replace os.open with open...)

--
Gabriel Genellina

casti...@gmail.com

unread,
May 13, 2008, 7:20:32 AM5/13/08
to
On May 13, 6:18 am, "Gabriel Genellina" <gagsl-...@yahoo.com.ar>
wrote:

Writing's fine, but don't the musicals suck?

casti...@gmail.com

unread,
May 13, 2008, 7:24:00 AM5/13/08
to
On May 13, 6:18 am, "Gabriel Genellina" <gagsl-...@yahoo.com.ar>
wrote:

Yes: fine! But, all we do is start a Tron ring, play Tron on
laptops. You have micro-divide currency, you can probably make
musicals -too-; and I don't have enough to say to get this...

BE TALKING!

Wolfgang Grafen

unread,
May 13, 2008, 7:44:27 AM5/13/08
to
dannyw...@googlemail.com schrieb:
untested:
f=" ".join(f)
f.split()

Best regards

Wolfgang

J. Clifford Dyer

unread,
May 13, 2008, 8:15:55 AM5/13/08
to dannyw...@googlemail.com, pytho...@python.org

Instead of casting to a string, each element of your list is already a
string, so use that instead:

f = open("get_hostnames")
hosts =[]

# gets each string one at a time.
for line in f:
# get rid of the pesky \n at the end
line = line.strip()
# separate the hostnames into a list
hosts += line.split(' ')

> Any help is highly appreciated
>
> ta
>
> dan.

> --
> http://mail.python.org/mailman/listinfo/python-list
>

Giuseppe Ottaviano

unread,
May 13, 2008, 9:17:40 AM5/13/08
to dannyw...@googlemail.com, pytho...@python.org

If the file is really big, you may want not to construct an actual
list with all the words, but instead use an iterator. If you define
the function

def ichain(seq):
for s in seq:
for x in s: yield x

(which is often useful and I don't think it has been included in
itertools) you can iterate lazily on the file:

hosts = ichain(s.split() for s in f)
for host in hosts:
# ...

HTH,
Giuseppe

casti...@gmail.com

unread,
May 13, 2008, 9:24:56 AM5/13/08
to
On May 13, 8:17 am, Giuseppe Ottaviano <giu...@gmail.com> wrote:
> Giuseppe- Hide quoted text -

>
> - Show quoted text -

I am having trouble following, but I am not an always-rightter. Was
s.split( ) one of the things you wanted to do to a line, and likely a
really common one? I'm trying to approach problems impractically.

Now of course, if anything else is going on in the program, you will
need separate threads or separate interpreters/processes. Does Python
meet sufficiencies on threading? What file do we have to test it on?

Peter Otten

unread,
May 13, 2008, 9:32:00 AM5/13/08
to
Giuseppe Ottaviano wrote:

> def ichain(seq):
>         for s in seq:
>                 for x in s: yield x
>
> (which is often useful and I don't think it has been included in  
> itertools) you can iterate lazily on the file:

Python 2.6 includes itertools.chain.from_iterable() with that functionality.

Peter

casti...@gmail.com

unread,
May 13, 2008, 10:08:35 AM5/13/08
to

Can you color the help manual with very fine shades of off-white to
ease reading? I was thinking a few pixels shy of red of white to
accentuate what are the class methods and which are not. I also have
an argument that net readability would decrease, but the sample sizes
on that kind of metric are a little brinky with privacy fears around
where I'm from. I just try to make Tron rings.

casti...@gmail.com

unread,
May 13, 2008, 10:31:24 AM5/13/08
to

I am also me the that's the readability of legibles on color of light
the lighterers.

More simply, that could vary widely though, and I've heard of a
'fovea'.

casti...@gmail.com

unread,
May 13, 2008, 10:39:24 AM5/13/08
to
> 'fovea'.- Hide quoted text -

>
> - Show quoted text -

Furthermore "Optical Sensors and Sensing Systems for Natural Resources
and Food Safety and Quality" from wixipedia omits sex. for Food and
Sex. I think concepts are related to perceptions. food.

Message has been deleted

casti...@gmail.com

unread,
May 14, 2008, 7:59:15 AM5/14/08
to
On May 13, 11:25 pm, Dennis Lee Bieber <wlfr...@ix.netcom.com> wrote:
> On Tue, 13 May 2008 04:14:16 -0700 (PDT), dannywebs...@googlemail.com
> declaimed the following in comp.lang.python:

>
> > So f is a list, rather than a file object, of which os.open would have
> > returned (my initial typo redirected the missive of this post, sorry!)
>
>         Other than the facet that os.open() is low-level C file object and
> not a Python file object...
>
>         What you have returned is a list of lines... Hmmm, if os.popen()
> supports .readlines() it might even support direct iteration
>
> for ln in os.popen():
>         do something with the line
>
>         Now the matter comes down to what each line looks like... It is NOT
> a "list" in Python terms, no matter what delimiters it has (and one of
> your examples doesn't even seem to be consistant -- [' .... ]' is not
> the same as [' .... '] )
>
>         For space separated hostnames....
>
> for ln in os.popen(...):        #assuming it works without a preread
>         for host in ln.split():
>                 do something with host...
> --
>         Wulfraed        Dennis Lee Bieber               KD6MOG
>         wlfr...@ix.netcom.com                wulfr...@bestiaria.com
>                 HTTP://wlfraed.home.netcom.com/
>         (Bestiaria Support Staff:               web-a...@bestiaria.com)
>                 HTTP://www.bestiaria.com/

Compositions can't have names in the singular case.

0 new messages