Re: An ordered dictionary for the Python library?

2007-09-15 Thread Diez B. Roggisch
Mark Summerfield schrieb:
> On 14 Sep, 21:23, James Stroud <[EMAIL PROTECTED]> wrote:
>> Mark Summerfield wrote:
>>> I guess I'll have to rename my module (although unfortunately, my book
>>> has just gone into production and I have a (simpler) example of what I
>>> considered to be an ordered dict, so I will be adding to the
>>> terminology confusion). That notwithstanding, given that it is a
>>> sorteddict, how is the API?
>> I must think the API good because I have been implementing, in parallel
>> with this discussion, my own "OrderedDict" with a very similar API (this
>> is part of a larger project where I recently found the need to have a
>> well-implemented ordered dict). The only real omission I see is to allow
>> instantiating a "sorted dict" with an optional cmp function--to allow
>> the generalization of such features as case-independence, etc.
> 
> I tend to create different orderings by munging the keys rather than
> by having optional cmp functions (as you'll see in the sorteddict.py
> docstring). I've now put sorteddict on PyPI (with docs & tests):
> http://pypi.python.org/pypi/sorteddict

The advantage of a passed cmp-function is that the context of usage 
hasn't to be aware of any change in semantics. Yet for better 
performance, the cmp-function might be a tad to slow, better use a 
key-function like for sorted/sort.

Additionally, I'd change the parameter names of the keys()-method to 
start/end and make more clear if end is inclusive or not. The 
first/secondindex-names are pretty horrible IMHO, because the 
essentially enumerate parameters. Who wants to work with a method

foo(arg1, arg2, arg3)

? :)

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


Re: Just bought Python in a Nutshell

2007-09-15 Thread Tor Erik Sønvisen
Python in a nutshell also comes in a second edition:
http://www.oreilly.com/catalog/pythonian2/index.html. Here, many of
the new features in Python 2.5 are included. I haven't read through
the first the edition, but I can honestly say that reading through the
second edition has made me a better programmer, not just a better
Python programmer. I only wish I'd read through it earlier, which
would have saved me a lot of agony:)

-Tor Erik
-- 
http://mail.python.org/mailman/listinfo/python-list


Make money to share your videos

2007-09-15 Thread earnclick

Goodtolove.com is sharing their 50% adsense revenue with you to post
videos of anything.
Just keep up logging in and start posting now to make money...

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


c interfacing in 2.5

2007-09-15 Thread Rustom Mody
I used python extensive 3-5 years back.  Coming back I find some
changes.  Trying to understand whats new and would appreciate any
help/comments/pointers.

Earlier there were basically two options:
SWIG: convenient but inefficient
Native (Extending/Embedding): an efficient way of getting a headache!
(Boost being ignored because not using C++)

Now it seems there are more possibilities:

-- Sip seems to be more efficient than swig and easier than native but
not well documented
-- pyrex could be considered
-- I know someone who uses pygtk to make wrappings

But most interesting is ctype.  I wonder if having ctype in the core
language changes the ease of use of the native wrapping model and
thereby makes sip/swig etc less necessary?

Your views and/or experience appreciated.
-- 
http://mail.python.org/mailman/listinfo/python-list


trim start and trailing space chars from string

2007-09-15 Thread Konstantinos Pachopoulos
Hi,
is there something corresponding to the java String.trim() method, ie 
trim start and trailing space/tab chars from string?
say convert " asdf   "  to "asdf"?

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


Re: trim start and trailing space chars from string

2007-09-15 Thread Tim Williams
On 15/09/2007, Konstantinos Pachopoulos <[EMAIL PROTECTED]> wrote:
> Hi,
> is there something corresponding to the java String.trim() method, ie
> trim start and trailing space/tab chars from string?
> say convert " asdf   "  to "asdf"?

>>> ' asdf '.strip()
'asdf'
>>> ' asdf '.rstrip()
' asdf'
>>> ' asdf '.lstrip()
'asdf '
>>>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to avoid overflow errors

2007-09-15 Thread James Stroud
Steven D'Aprano wrote:
> On Fri, 14 Sep 2007 18:19:45 -0700, James Stroud wrote:
> 
>>> How do I subclass int and/or long so that my class also auto-converts
>>> only when needed?
>>>
>> Use __new__.
> 
> The disadvantage of that is that your example code requires me to 
> duplicate my methods in the long version and the int version. It's easy 
> enough to work around that (class factory function) but it just seems all 
> rather untidy...


The __new__ method is where you implement such decisions. There is no 
"tidier" way for one class "auto-convert" to another class, which is 
what you asked for (it says so right up there ^). So, if you don't like 
the answer, don't ask the question.

Despite its unseemly appearance because of all the underscores, it is 
the natural way in python (to do what you have asked and not something 
which you didn't ask).

The way to avoid duplicating methods (which is what you are asking for, 
no?) while still allowing your classes to maintain their identities is 
by using mixins:


class MyModulatingMixin(object):
   def modulate(self, sum):
 if self.modulus is None:
   return self.__class__(sum)
 else:
   return self.__class__(sum % self.modulus)
   def __add__(self, other):
 sum = long.__add__(long(self), long(other))
 return self.modulate(sum)
   def __mul__(self, other):
 sum = long.__mul__(long(self), long(other))
 return self.modulate(sum)

class MyLong(long):
   def __new__(cls, v, m=None):
 obj = long.__new__(cls, v)
 obj.modulus = m
 return obj

class MyInt(int):
   def __new__(cls, v, m=None):
 try:
   obj = int.__new__(cls, v)
   obj.modulus = m
 except OverflowError:
   obj = MyLong(v, m)
 return obj

for cls in MyLong, MyInt:
   cls.__bases__ = (MyModulatingMixin,) + cls.__bases__


py> i = MyInt(51)
py> j = MyInt(40, 7)
py> k = MyLong(2, 13)
py> i + j
91
py> j + k
0
py> k + j
3L
py> i * k
102
py> type(i * k)

py> k * i
11L
py> type(k * i)



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


Re: c interfacing in 2.5

2007-09-15 Thread Diez B. Roggisch
Rustom Mody schrieb:
> I used python extensive 3-5 years back.  Coming back I find some
> changes.  Trying to understand whats new and would appreciate any
> help/comments/pointers.
> 
> Earlier there were basically two options:
> SWIG: convenient but inefficient
> Native (Extending/Embedding): an efficient way of getting a headache!
> (Boost being ignored because not using C++)
> 
> Now it seems there are more possibilities:
> 
> -- Sip seems to be more efficient than swig and easier than native but
> not well documented
> -- pyrex could be considered
> -- I know someone who uses pygtk to make wrappings
> 
> But most interesting is ctype.  I wonder if having ctype in the core
> language changes the ease of use of the native wrapping model and
> thereby makes sip/swig etc less necessary?
> 
> Your views and/or experience appreciated.

ctypes is for C. Where it is great to use.

If you need C++-wrapping, I recommend SIP.

While the docs for SIP aren't overwhelming, I consider them accurate and 
complete. Best thing to do is to take a SIP-based project (most probably 
PyQt itself) and wheneever a question appears, rummage through it.


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


Re: trim start and trailing space chars from string

2007-09-15 Thread John Machin
On Sep 15, 7:24 pm, Konstantinos Pachopoulos <[EMAIL PROTECTED]>
wrote:
> Hi,
> is there something corresponding to the java String.trim() method, ie
> trim start and trailing space/tab chars from string?
> say convert " asdf   "  to "asdf"?

http://docs.python.org/lib/string-methods.html


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


Re: trim start and trailing space chars from string

2007-09-15 Thread Rustom Mody
>>> s=" abcdef "
>>> s.strip()
'abcdef'
>>> s.rstrip()
' abcdef'
>>> s.lstrip()
'abcdef '
>>>


On 9/15/07, Konstantinos Pachopoulos <[EMAIL PROTECTED]> wrote:
> Hi,
> is there something corresponding to the java String.trim() method, ie
> trim start and trailing space/tab chars from string?
> say convert " asdf   "  to "asdf"?
>
> Thnx
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: reading xls file from python

2007-09-15 Thread John Machin
On 15/09/2007 1:50 PM, Gabriel Genellina wrote:
> En Fri, 14 Sep 2007 18:56:34 -0300, <[EMAIL PROTECTED]> escribi�:
> 
>> I have installed python 2.5 for windows in my pc, I have a file xls 
>> say "file.xls" in c:/python25. How I can read this files from Python. 
>> Many thanks in advance.
> 
> Try xlrd: http://www.python.org/pypi/xlrd

In the interests of even-handedness:
http://www.velocityreviews.com/forums/t352440-how-to-read-excel-files-in-python.html
covers other possibilities.

OT: A note for the OP: It is not a good idea to store your data files 
(example: file.xls) in the folder of some installed software (example: 
c:/python25). You may need to re-install the software and this may trash 
your data. Consider storing data files in folders whose names give some 
hint as to their contents.

HTH,
John
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Just bought Python in a Nutshell

2007-09-15 Thread 7stud
Used copies of computer books for out of date editions are always
cheap.  "Python in a Nutshell (2nd ed)" is a reference book with a
frustratingly poor index--go figure.  It also contains errors not
posted in the errata.

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


Re: regexp search on infinite string?

2007-09-15 Thread John Machin
On Sep 15, 4:36 pm, Paddy <[EMAIL PROTECTED]> wrote:
> On Sep 15, 2:57 am, James Stroud <[EMAIL PROTECTED]> wrote:
>
>
>
> > Paddy wrote:
> > > Lets say i have a generator running that generates successive
> > > characters of a 'string'
> > >>From what I know, if I want to do a regexp search for a pattern of
> > > characters then I would have to 'freeze' the generator  and pass the
> > > characters so far to re.search.
> > > It is expensive to create successive characters, but caching could be
> > > used for past characters. is it possible to wrap the generator in a
> > > class, possibly inheriting from string, that would allow the regexp
> > > searching of the string but without terminating the generator? In
> > > other words duck typing for the usual string object needed by
> > > re.search?
>
> > > - Paddy.
>
> > re.search & re.compile checks for str or unicode types explicitly, so
> > you need to turn your data into one of those before using the module.

Aaaarbejaysus. Since when?

>>> import array
>>> ba = array.array('c', 'A hollow voice says "Plugh".')
>>> import re
>>> mobj = re.search('voi', ba)
>>> mobj
<_sre.SRE_Match object at 0x00B99598>
>>> mobj.span()
(9, 12)
>>>

>
> > buffer = []
> > while True:
> >buffer.append(mygerator.next())
> >m = re.search(pattern, "".join(buffer))
> >if m:
> >  process(m)
> >  buffer = []
>
> > James
>
> Thanks James.

So:
buffer = array.array('c')
and flick the "".join() etc etc

HTH,
John



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


int('\x23') != 0x23 (a.k.a convert char to integer of its byte representation)

2007-09-15 Thread Boris Dušek
Hi,

I am looking for the best way to convert a string of length 1 (= 1
character as string) to integer that has the same value as numeric
representation of that character. Background: I am writing functions
abstracting endianness, e.g. converting a string of length 4 to the
appropriate integer value (e.g. '\x01\x00\x00\x00' = 2**24 for big
endian memory, 2**0 for little endian memory). For this, I need to
know the numeric value of each byte and sum them according to
endianness.

I thought that something like int('\x01') might work, provided the
argument is string of length 1, but that throws an error:

>>> int('\x12')
Traceback (most recent call last):
  File "", line 1, in ?
ValueError: invalid literal for int():

The code I want to write looks like this:

mem = '\x11\x22\x33\x44'
factor = 1
sum = 0
for byte in mem:
sum += int(byte) * factor
factor *= 2**8

Could you please tell me how to achieve what I want in Python? (it
would be straightforward in C)

Thanks for any suggestions,
Boris Dušek

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

Re: Modul (%) in python not like in C?

2007-09-15 Thread Bryan Olson
J. Cliff Dyer wrote:
> Bryan Olson wrote:
>> Scott David Daniels wrote:
>>   
>>> C, which was designed as a "high level assembly language," does not
>>> tightly define the results of / and % for negative numbers.  Instead
>>> it defines the result for positive over positive, and constrains the
>>> result for the others. 
>>> 
>> Not true. Here it is again:
>>
>>  When integers are divided, the result of the / operator is
>>  the algebraic quotient with any fractional part discarded.(87)
>>  If the quotient a/b is representable, the expression
>>  (a/b)*b + a%b shall equal a.
>>  [...]
>>  87) This is often called ‘‘truncation toward zero’’.
>>
>>  [International Standard ISO/IEC 9899:1999, Section 6.5.5
>>  Multiplicative operators, Paragraph 6 and footnote 87]
>>   
> But C was around for a long time before the 1999 standard.  C89,
> commonly called ANSI C, is still very commonly used in compilers, and
> K&R C goes back to 1972.  Is truncation toward 0 the standard for K&R C
> as well? 

Looks like you have a good point there. I do not have a copy of
the C89 standard, but do I have editions of Harbison&Steele that
reflect the 1989 standard, and they confirm your suspicion that
the results of the '/' and '%' operators on integer operants
were not uniquely defined in cases where an operand could be
negative.

Describing the '/' operator:

 For integral operands,, if the mathematical quotient is
 is not an exact integer, then the result will be one of
 the integers closest to the mathematical quotient of the
 operands. Of those two integers, the one closer to 0 must
 be chosen if both operands are positive

Furthermore:

 It is always true that (a/b)*b + a%b is equal to a if b
 is not 0

Quoted from: S. P. Harbison and G. L. Steele. /C: A
Reference Manual, Third Edition/, Prentice Hall, 1991;
Section 7.6.1, page 187.

So Arnau Sanchez and Scott David Daniels were correct with
respect to C89 and older standards, and many implementations
have not yet adopted the 1999 standard that strictly defines
the results of / and %.


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

Re: int('\x23') != 0x23 (a.k.a convert char to integer of its byte representation)

2007-09-15 Thread Marc 'BlackJack' Rintsch
On Sat, 15 Sep 2007 11:55:28 +, Boris Dušek wrote:

> I am looking for the best way to convert a string of length 1 (= 1
> character as string) to integer that has the same value as numeric
> representation of that character. Background: I am writing functions
> abstracting endianness, e.g. converting a string of length 4 to the
> appropriate integer value (e.g. '\x01\x00\x00\x00' = 2**24 for big
> endian memory, 2**0 for little endian memory). For this, I need to
> know the numeric value of each byte and sum them according to
> endianness.

So you are looking for the `struct` module in the standard library instead
of doing this yourself.  :-)

If you insist on doing it yourself take a look at the built-in `ord()`
function.

Ciao,
Marc 'BlackJack' Rintsch
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Https conversation - debug?

2007-09-15 Thread Thorsten Kampe
* Johny (Fri, 14 Sep 2007 12:51:22 -0700)
> Is there any good sniffer for https protocol?

What's the connection to Python?

> How can be watched https conversation?

ssldump. Note that in order to decrypt the traffic you need to have 
the server's private key.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: int('\x23') != 0x23 (a.k.a convert char to integer of its byte representation)

2007-09-15 Thread Boris Dušek
On Sep 15, 1:59 pm, Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> wrote:
> So you are looking for the `struct` module in the standard library instead
> of doing this yourself.  :-)
>
> If you insist on doing it yourself take a look at the built-in `ord()`
> function.
>

Thanks Marc,

both things are exactly what I was looking for (I am a bit ashamed
that I did not find the built-in ord :-)

Boris

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


how to join array of integers?

2007-09-15 Thread Summercool
i think in Ruby, if you have an array (or list) of integers

foo = [1, 2, 3]

you can use foo.join(",") to join them into a string "1,2,3"

in Python... is the method to use  ",".join() ?  but then it must take
a list of strings... not integers...

any fast method?

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


Re: int('\x23') != 0x23 (a.k.a convert char to integer of its byte representation)

2007-09-15 Thread John Machin
On Sep 15, 9:55 pm, Boris Dušek <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I am looking for the best way to convert a string of length 1 (= 1
> character as string) to integer that has the same value as numeric
> representation of that character. Background: I am writing functions
> abstracting endianness, e.g. converting a string of length 4 to the
> appropriate integer value (e.g. '\x01\x00\x00\x00' = 2**24 for big
> endian memory, 2**0 for little endian memory). For this, I need to
> know the numeric value of each byte and sum them according to
> endianness.
>
> I thought that something like int('\x01') might work, provided the
> argument is string of length 1, but that throws an error:
>
> >>> int('\x12')
>
> Traceback (most recent call last):
>   File "", line 1, in ?
> ValueError: invalid literal for int():
>
> The code I want to write looks like this:
>
> mem = '\x11\x22\x33\x44'
> factor = 1
> sum = 0
> for byte in mem:
> sum += int(byte) * factor
> factor *= 2**8
>
> Could you please tell me how to achieve what I want in Python? (it
> would be straightforward in C)
>

'BlackJack' has already sent you looking for the docs for ord() and
the struct module but a few other clues seem necessary:

1. Don't "think that something like int() might work", read the docs.

2. "factor *= 2 **8"?? Python compiles to bytecode; don't make it work
any harder than it has to. "factor" is quite unnecessary. That loop
needs exactly 1 statement:
sum = (sum << 8) + ord(byte)

3. Don't use "sum" as a variable name; it will shadow the sum() built-
in function.

4. Read through the docs for *all* the built-in
functions -- all kinds of interesting and useful gadgets to be found
there.

5. In a dark corner there lives a strange beast called the array
module:

>>> import array
>>> array.array('I', '\x01\x00\x00\x00')[0]
1L
>>> array.array('I', '\x00\x00\x00\x01')[0]
16777216L
>>> 2**24
16777216
>>>

HTH,
John

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

Re: how to join array of integers?

2007-09-15 Thread Marc 'BlackJack' Rintsch
On Sat, 15 Sep 2007 12:36:02 +, Summercool wrote:

> i think in Ruby, if you have an array (or list) of integers
> 
> foo = [1, 2, 3]
> 
> you can use foo.join(",") to join them into a string "1,2,3"
> 
> in Python... is the method to use  ",".join() ?  but then it must take
> a list of strings... not integers...
> 
> any fast method?

Convert them to strings before joining:

In [145]: foo = [1, 2, 3]

In [146]: ','.join(map(str, foo))
Out[146]: '1,2,3'

Ciao,
Marc 'BlackJack' Rintsch
-- 
http://mail.python.org/mailman/listinfo/python-list


python 2.5 cElementTree entity troubles

2007-09-15 Thread Diez B. Roggisch
Hi,

this snippet, adapted from

http://svn.effbot.org/public/tags/celementtree-1.0-20050126/selftest.py

fails miserably with an unknown entity exception:

from xml.etree.cElementTree import *

ENTITY_XML = """
&entity;
"""

parser = XMLTreeBuilder()
parser.entity["entity"] = "text"
print parser.entity

parser.feed(ENTITY_XML)
root = parser.close()


Any suggestions on how to teach the built-in ET-parser entities?

Python version is Python 2.5.1 (r251:54869, Apr 18 2007, 22:08:04)  on OSX.

Regards,

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


Re: how to join array of integers?

2007-09-15 Thread js
print ''.join([str(i) for i in [1,2,3]])

On 9/15/07, Summercool <[EMAIL PROTECTED]> wrote:
> i think in Ruby, if you have an array (or list) of integers
>
> foo = [1, 2, 3]
>
> you can use foo.join(",") to join them into a string "1,2,3"
>
> in Python... is the method to use  ",".join() ?  but then it must take
> a list of strings... not integers...
>
> any fast method?
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how to join array of integers?

2007-09-15 Thread John Machin
On Sep 15, 10:36 pm, Summercool <[EMAIL PROTECTED]> wrote:
> i think in Ruby, if you have an array (or list) of integers
>
> foo = [1, 2, 3]
>
> you can use foo.join(",") to join them into a string "1,2,3"
>
> in Python... is the method to use  ",".join() ?  but then it must take
> a list of strings... not integers...
>
> any fast method?

>>> foo = [1,2,3]
>>> ",".join(str(x) for x in foo)
'1,2,3'
>>> ",".join(map(str, foo))
'1,2,3'
>>>

If you are going to write several such results to a file, consider
using the csv module.

HTH,
John

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


Re: regexp search on infinite string?

2007-09-15 Thread Paddy
On Sep 14, 9:49 pm, Paddy <[EMAIL PROTECTED]> wrote:
> Lets say i have a generator running that generates successive
> characters of a 'string'>From what I know, if I want to do a regexp search 
> for a pattern of
>
> characters then I would have to 'freeze' the generator  and pass the
> characters so far to re.search.
> It is expensive to create successive characters, but caching could be
> used for past characters. is it possible to wrap the generator in a
> class, possibly inheriting from string, that would allow the regexp
> searching of the string but without terminating the generator? In
> other words duck typing for the usual string object needed by
> re.search?
>
> - Paddy.

There seems to be no way of breaking into the re library accessing
characters from the string:

>>> class S(str):
... def __getitem__(self, *a):
... print "getitem:",a
... return str.__getitem__(self, *a)
... def __get__(self, *a):
... print "get:",a
... return str.__get__(self, *a)
...
>>> s = S('sdasd')
>>> m = re.search('as', s); m.span()
(2, 4)
>>> m = sre.search('as', s); m.span()
(2, 4)
>>> class A(array.array):
... def __getitem__(self, *a):
... print "getitem:",a
... return str.__getitem__(self, *a)
... def __get__(self, *a):
... print "get:",a
... return str.__get__(self, *a)
...
>>> s = A('c','sdasd')
>>> m = re.search('as', s); m.span()
(2, 4)
>>> m = sre.search('as', s); m.span()
(2, 4)
>>>

- Paddy.

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


Re: regexp search on infinite string?

2007-09-15 Thread John Machin
On Sep 15, 10:56 pm, Paddy <[EMAIL PROTECTED]> wrote:
> On Sep 14, 9:49 pm, Paddy <[EMAIL PROTECTED]> wrote:
>
> > Lets say i have a generator running that generates successive
> > characters of a 'string'>From what I know, if I want to do a regexp search 
> > for a pattern of
>
> > characters then I would have to 'freeze' the generator  and pass the
> > characters so far to re.search.
> > It is expensive to create successive characters, but caching could be
> > used for past characters. is it possible to wrap the generator in a
> > class, possibly inheriting from string, that would allow the regexp
> > searching of the string but without terminating the generator? In
> > other words duck typing for the usual string object needed by
> > re.search?
>
> > - Paddy.
>
> There seems to be no way of breaking into the re library accessing
> characters from the string:
>
> >>> class S(str):
>
> ... def __getitem__(self, *a):
> ... print "getitem:",a
> ... return str.__getitem__(self, *a)
> ... def __get__(self, *a):
> ... print "get:",a
> ... return str.__get__(self, *a)
> ...>>> s = S('sdasd')
> >>> m = re.search('as', s); m.span()
> (2, 4)
> >>> m = sre.search('as', s); m.span()
> (2, 4)
> >>> class A(array.array):
>
> ... def __getitem__(self, *a):
> ... print "getitem:",a
> ... return str.__getitem__(self, *a)
> ... def __get__(self, *a):
> ... print "get:",a
> ... return str.__get__(self, *a)
> ...
>
> >>> s = A('c','sdasd')
> >>> m = re.search('as', s); m.span()
> (2, 4)
> >>> m = sre.search('as', s); m.span()
> (2, 4)
>
> - Paddy.

That would no doubt be because it either copies the input [we hope
not] or more likely because it hands off the grunt work to a C module
(_sre).

Why do you want to "break into" it, anyway?

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


Re: Python+Expect+Win32 = Not Possible?

2007-09-15 Thread Cameron Laird
In article <[EMAIL PROTECTED]>,
gamename  <[EMAIL PROTECTED]> wrote:
>On Sep 13, 1:42 am, [EMAIL PROTECTED] wrote:
>> On Sep 12, 9:27 pm, gamename <[EMAIL PROTECTED]> wrote:
>>
>> > Hi,
>>
>> > Is it still the case there is no practical Expect-like module for
>> > win32? I know that cygwin can support pexpect, but that isn't an
>> > option here --- I have to use a native win32 Python version.
>>
>> > Are there alternatives, or is it simply not an option to replicate
>> > Expect on win32 with python?
>>
>> > All I'm trying to do is start a couple processes, wait for each to say
>> > "done" on stdout and then quit (or timeout if something went wrong).
>>
>> > TIA,
>> > -T
>>
>> I had planned on using telnet to do the same thing on windows.  I
>> don't think I ever proved it, but I'm pretty sure it will work.
>
>Thanks, Sean.  The problem is that telnet is generally disabled on
>most hosts nowadays.
.
.
.
I'm plenty confused about who's saying what now.  Yes,
well-run modern hosts disable telnetd; I think the 
original description, though, was about use of telnet
to connect to hardware devices which provide some
simple TCP/IP (or serial-line?) service.  Windows 
still builds in the telnet *client* ...

... which might well be superfluous.  If these 
hardware devices (did I understand that part correctly?)
are just simple network servers, and don't, for example,
demand authentication, Python's socket library can be
used directly (and even portably!), without involvement
of Expect capabilities or an external telnet executable.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Rename multiple files using names in a text file

2007-09-15 Thread rémi
Le Fri, 14 Sep 2007 12:52:52 -0700, James Stroud a écrit:

[...]
> Other than that your strip() is stripping off some whitespace that is 
> part of the name, I really can't see the problem either, but did you try 
> to add in the explicit path? E.g.:

actually, the problem was in "while i <= len(list_jpg_strip)" and i should
have been "while i < len(list_jpg_strip)".

Antoher problem was the name of jpg's files used for testing. A naughty
one was nammed "file.jpg " instead of "file.jpg". So maube, as you saif,
stripping is useless for list of jpg files.
Thanks a lot.
Rémi
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Coming from Perl - SOLVED

2007-09-15 Thread Amer Neely
I V wrote:
> On Thu, 13 Sep 2007 23:49:32 -0400, Amer Neely wrote:
>> In trying to track down why this script would not run on my host, it has
>> to come to light that Python is installed, however the Apache module is
>> not. So, short story is - I was flogging a dead horse.
> 
> Which Apache module? You don't need any special modules (just the regular 
> CGI one) to use python in a CGI script.

That is an interesting observation. It does run under my Apache + Win2K 
at home, with no special configuration by me. All I'm going on is what 
the techs told me.

So, you think it may be something else? I've changed and even eliminated 
the end-of-line chars in my print statements.

Another poster (Bryan Olson) has suggested a few things to try as well 
so I will try those. I don't have shell access though, so the best I can 
do is execute shell commands from a Perl script.

-- 
Amer Neely
w: www.webmechanic.softouch.on.ca/
Perl | MySQL programming for all data entry forms.
"Others make web sites. We make web sites work!"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Coming from Perl

2007-09-15 Thread Amer Neely
Bryan Olson wrote:
> Amer Neely wrote:
>> This seems to indicate that maybe my host needs to configure Apache to 
>> run python scripts? But I didn't need to do anything with mine.
> 
> Another possibility: If it works on Windows but not Unix, check
> the end-of-line characters. Windows ends each line with the two
> character sequence carriage-return + newline, which in Python
> is "\r\n". Unix uses newline alone, "\n".
> 
> Most Unixies will choke on a #! line with a carriage return.
> The Python interpreter will accept source files with either
> end-of-line on either system, but of course you'll not get
> that far unless the operating system respects the shebang line.
> 
> Maybe you already checked that. Hmmm...other possiblities...
> 
> Do you have shell access? Can you executing it directly from
> the shell? Do you get a Python error, or some other?
> 
> Did you:  chmod ugo+rx 
> 
> Is Python in /usr/bin? What does "which python" say?
> 
> Generally, most experts seem to prefer:
> 
> #!/usr/bin/env python
> 
> You might try changing the the extension of your script from .py
> to .cgi. Windows uses the .py to choose the executable, but Unix
> does not care; it used the shebang line.
> 
> 

Hmmm. These are interesting suggestions. Especially in light of a new 
wrinkle pointed out by [IV]. That being the script runs fine under my 
Apache at home with no special modules loaded.

I don't have shell access but I can run 'which python' from a Perl 
script, and I will try the different shebang line you suggested.

Thanks for the suggestions.

-- 
Amer Neely
w: www.webmechanic.softouch.on.ca/
Perl | MySQL programming for all data entry forms.
"Others make web sites. We make web sites work!"
-- 
http://mail.python.org/mailman/listinfo/python-list


How to get headers in urllib2 response

2007-09-15 Thread Johny
Can anyone provide an example how to find out the return code and
header  from an urllib2 request?
For example
response = urllib2.urlopen('http://www.google.com').read().strip()
provides data
 but I do not know if the return code was 200 or different.

Thanks

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


Re: how to join array of integers?

2007-09-15 Thread Arnau Sanchez
js escribió:

>> On 9/15/07, Summercool <[EMAIL PROTECTED]> wrote:

>> in Python... is the method to use  ",".join() ?  but then it must take
>> a list of strings... not integers...
>>
>> any fast method?

 > print ''.join([str(i) for i in [1,2,3]])

It's better to use generator comprehension instead of LC:

",".join(str(i) for i in [1, 2, 3])

Or, if you happen to like the itertools modules:

from itertools import imap
",".join(imap(str, [1, 2, 3]))
-- 
http://mail.python.org/mailman/listinfo/python-list


DDE error Poke Failed

2007-09-15 Thread xcarma
Hi

First of all I am a beginner with python and I am a bit fooling around
to check wich possibilities I have.  I'm trying to get some data to an
internal developped application.

Server: DDE
Topic: SCSDDeServer
Item: SendCustomerData
Item data: value, value, value

I got the following code

import win32ui, dde
server = dde.CreateServer()
server.Create("test")
conversation = dde.CreateConversation(server)
conversation.ConnectTo("SCS","SCSDDeServer")
conversation.Poke('"SendCustomerData", "S1234567,,"')

When I run this I get

Traceback (most recent call last):
  File "U:\python\scs.py", line 6, in 
conversation.Poke('"SendCustomerData", "S1234567"')
error: Poke failed

Am I doing anything wrong? Or is it possible that the SCS application
only accepts pokes from a specific program?

Regards

Maarten

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


Re: Can You Program?

2007-09-15 Thread [EMAIL PROTECTED]
On Sep 13, 3:37 am, [EMAIL PROTECTED] wrote:
> We are offering $2000 USD for the best website developed withwww.hatspin.com
>
> Are you up to it??

Hey, thanks for spamming our group. Perhaps you should try again after
you learn proper HTML coding.
Results from http://validator.w3.org/ : Failed validation, 26 Errors

Really, really doubt that you are doing anything but trying to gather
e-mails. My 12 year old has made better sites.

Oh, and does jobslide.com know that you are linking to images on their
site? I'll be mentioning that to them, just so you know.

Please, put down the keyboard and step away from the computer..

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


Re: Coming from Perl

2007-09-15 Thread Amer Neely
Bryan Olson wrote:
> Amer Neely wrote:
>> This seems to indicate that maybe my host needs to configure Apache to 
>> run python scripts? But I didn't need to do anything with mine.
> 
> Another possibility: If it works on Windows but not Unix, check
> the end-of-line characters. Windows ends each line with the two
> character sequence carriage-return + newline, which in Python
> is "\r\n". Unix uses newline alone, "\n".
> 
> Most Unixies will choke on a #! line with a carriage return.
> The Python interpreter will accept source files with either
> end-of-line on either system, but of course you'll not get
> that far unless the operating system respects the shebang line.
> 
> Maybe you already checked that. Hmmm...other possiblities...
> 
> Do you have shell access? Can you executing it directly from
> the shell? Do you get a Python error, or some other?
> 
> Did you:  chmod ugo+rx 
> 
> Is Python in /usr/bin? What does "which python" say?
> 
> Generally, most experts seem to prefer:
> 
> #!/usr/bin/env python
> 
> You might try changing the the extension of your script from .py
> to .cgi. Windows uses the .py to choose the executable, but Unix
> does not care; it used the shebang line.
> 
> 

I tried `which python` and `whereis python` and got 0 back as a result. 
So it seems Python is not installed at all.

-- 
Amer Neely
w: www.webmechanic.softouch.on.ca/
Perl | MySQL programming for all data entry forms.
"Others make web sites. We make web sites work!"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: python 2.5 cElementTree entity troubles

2007-09-15 Thread Stefan Behnel
Diez B. Roggisch wrote:
> Any suggestions on how to teach the built-in ET-parser entities?

As you already do it in your code.

http://effbot.org/elementtree/elementtree-xmlparser.htm#tag-ET.XMLParser.entity

But I guess your version of cET is just too old.

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


Re: Can You Program?

2007-09-15 Thread Diez B. Roggisch
> Hey, thanks for spamming our group. Perhaps you should try again after
> you learn proper HTML coding.
> Results from http://validator.w3.org/ : Failed validation, 26 Errors
> 
> Really, really doubt that you are doing anything but trying to gather
> e-mails. My 12 year old has made better sites.
> 
> Oh, and does jobslide.com know that you are linking to images on their
> site? I'll be mentioning that to them, just so you know.
> 
> Please, put down the keyboard and step away from the computer..
> 

And thanks to you, the spammer got another post containing his website, 
increasing page-rank. Well done!

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


Re: extract text from log file using re

2007-09-15 Thread Fabian Braennstroem
Hi to all,

thanks for your help. The approach
print '\r\n'.join([x.strip() for x in
open('c:/flutest.txt') if 'e-0' in x])
works quite well :-)

Greetings!
Fabian

Fabian Braennstroem schrieb am 09/13/2007 09:09 PM:
> Hi,
> 
> I would like to delete a region on a log file which has this
> kind of structure:
> 
> 
> #--flutest
>498 1.0086e-03 2.4608e-04 9.8589e-05 1.4908e-04
> 8.3956e-04 3.8560e-03 4.8384e-02 11:40:01  499
>499 1.0086e-03 2.4608e-04 9.8589e-05 1.4908e-04
> 8.3956e-04 3.8560e-03 4.8384e-02 11:40:01  499
> reversed flow in 1 faces on pressure-outlet 35.
> 
> Writing
> "/home/gcae504/SCR1/Solververgleich/Klimakruemmer_AK/CAD/Daimler/fluent-0500.cas"...
>  5429199 mixed cells, zone 29, binary.
> 11187656 mixed interior faces, zone 30, binary.
>20004 triangular wall faces, zone 31, binary.
> 1104 mixed velocity-inlet faces, zone 32, binary.
>   133638 triangular wall faces, zone 33, binary.
>14529 triangular wall faces, zone 34, binary.
> 1350 mixed pressure-outlet faces, zone 35, binary.
>11714 mixed wall faces, zone 36, binary.
>  1232141 nodes, binary.
>  1232141 node flags, binary.
> Done.
> 
> 
> Writing
> "/home/gcae504/SCR1/Solververgleich/Klimakruemmer_AK/CAD/Daimler/fluent-0500.dat"...
> Done.
> 
>500 1.0049e-03 2.4630e-04 9.8395e-05 1.4865e-04
> 8.3913e-04 3.8545e-03 1.3315e-01 11:14:10  500
> 
>  reversed flow in 2 faces on pressure-outlet 35.
>501 1.0086e-03 2.4608e-04 9.8589e-05 1.4908e-04
> 8.3956e-04 3.8560e-03 4.8384e-02 11:40:01  499
> 
> #--
> 
> I have a small script, which removes lines starting with
> '(re)versed', '(i)teration' and '(t)urbulent'  and put the
> rest into an array:
> 
> # -- plot residuals 
>   import re
> filename="flutest"
> reversed_flow=re.compile('^\ re')
> turbulent_viscosity_ratio=re.compile('^\ tu')
> iteration=re.compile('^\ \ i')
> 
> begin_of_res=re.compile('>\ \ \ i')
> end_of_res=re.compile('^\ ad')
> 
> begin_of_writing=re.compile('^\Writing')
> end_of_writing=re.compile('^\Done')
> 
> end_number=0
> begin_number=0
> 
> 
> n = 0
> for line in open(filename).readlines():
> n = n + 1
> if begin_of_res.match(line):
> begin_number=n+1
> print "Line Number (begin): " + str(n)
> 
> if end_of_res.match(line):
> end_number=n
> print "Line Number (end): " + str(n)
> 
> if begin_of_writing.match(line):
> begin_w=n+1
> print "BeginWriting: " + str(n)
> print "HALLO"
> 
> if end_of_writing.match(line):
> end_w=n+1
> print "EndWriting: " +str(n)
> 
> if n > end_number:
> end_number=n
> print "Line Number (end): " + str(end_number)
> 
> 
> 
> 
> 
> n = 0
> array = []
> array_dummy = []
> array_mapped = []
> 
> mapped = []
> mappe = []
> 
> n = 0
> for line in open(filename).readlines():
> n = n + 1
> if (begin_number <= n) and (end_number > n):
> #if (begin_w <= n) and (end_w > n):
> if not reversed_flow.match(line) and not
> iteration.match(line) and not
> turbulent_viscosity_ratio.match(line):
> m=(line.strip().split())
> print m
> if len(m) > 0:
> #print len(m)
> laenge_liste=len(m)
> #print len(m)
> mappe.append(m)
> 
> 
> #--end plot
> residuals-
> 
> This works fine ; except for the region with the writing
> information:
> 
> #-writing information
> -
> Writing "/home/fb/fluent-0500.cas"...
>  5429199 mixed cells, zone 29, binary.
> 11187656 mixed interior faces, zone 30, binary.
>20004 triangular wall faces, zone 31, binary.
> 1104 mixed velocity-inlet faces, zone 32, binary.
>   133638 triangular wall faces, zone 33, binary.
>14529 triangular wall faces, zone 34, binary.
> 1350 mixed pressure-outlet faces, zone 35, binary.
>11714 mixed wall faces, zone 36, binary.
>  1232141 nodes, binary.
>  1232141 node flags, binary.
> Done.
> # ---end writing information ---
> 
> Does anyone know, how I can this 'writing' stuff too? The
> matchingIt occurs a lot :-(
> 
> Regards!
> Fabian
> 

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


Re: python 2.5 cElementTree entity troubles

2007-09-15 Thread Diez B. Roggisch
Stefan Behnel schrieb:
> Diez B. Roggisch wrote:
>> Any suggestions on how to teach the built-in ET-parser entities?
> 
> As you already do it in your code.
> 
> http://effbot.org/elementtree/elementtree-xmlparser.htm#tag-ET.XMLParser.entity
> 
> But I guess your version of cET is just too old.

Unfortunately, it's the python 2.5-build-in one.. :(

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


Re: How to get headers in urllib2 response

2007-09-15 Thread js
How about  using httplib?
http://docs.python.org/lib/httplib-examples.html

HTTPResponse has getheaders()  method, too.

On 9/15/07, Johny <[EMAIL PROTECTED]> wrote:
> Can anyone provide an example how to find out the return code and
> header  from an urllib2 request?
> For example
> response = urllib2.urlopen('http://www.google.com').read().strip()
> provides data
>  but I do not know if the return code was 200 or different.
>
> Thanks
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: python 2.5 cElementTree entity troubles

2007-09-15 Thread Stefan Behnel
Stefan Behnel wrote:
> Diez B. Roggisch wrote:
>> Any suggestions on how to teach the built-in ET-parser entities?
> 
> As you already do it in your code.
> 
> http://effbot.org/elementtree/elementtree-xmlparser.htm#tag-ET.XMLParser.entity

Hmmm, I never needed this, but the test doesn't work for me either (with ET
1.3, Python 2.5.1). ET's parser uses the generic expat callback for entities,
but it doesn't seem to get called for entities on my side... Looks like
something's broken there.

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


Re: How to avoid overflow errors

2007-09-15 Thread Eduardo O. Padoan
On 9/15/07, Carl Banks <[EMAIL PROTECTED]> wrote:
> On Fri, 14 Sep 2007 22:59:13 -0300, Eduardo O. Padoan wrote:
>
> > On 14 Sep 2007 18:08:00 -0700, Paul Rubin
> > <"http://phr.cx"@nospam.invalid> wrote:
> >> "Eduardo O. Padoan" <[EMAIL PROTECTED]> writes:
> >> > Not totally unrelated, but in Py3k, as it seems, overflows are really
> >> > things of the past:
> >> >
> >> >
> >> > Python 3.0a1 (py3k:58061, Sep  9 2007, 13:18:37) [GCC 4.1.3 20070831
> >> > (prerelease) (Ubuntu 4.1.2-16ubuntu1)] on linux2 Type "help",
> >> > "copyright", "credits" or "license" for more information.
> >> > >>> class MyInt(int):
> >> > ... pass
> >> > ...
> >> > >>> import sys
> >> > >>> MyInt(sys.maxint)
> >> > 2147483647
> >> > >>> MyInt(sys.maxint+1)
> >> > 2147483648
> >>
> >> I'd be interested in knowing what happens in 3.0a1 with
> >>
> >>   a = itertools.count(sys.maxint)
> >>   print a.next()
> >>   print a.next()
> >
> >
>  print(next(a))
> > Traceback (most recent call last):
> >   File "", line 1, in 
> > OverflowError: cannot count beyond PY_SSIZE_T_MAX
> >
> > Hum, you've got me there. it is the same as in 2.x. Maybe the message
> > should be less crypt, at least - nothing that googling for
> > PY_SSIZE_T_MAX cant help.
>
> This should demonstrate that OverflowError will not disappear entirely
> even in Python 3.

No one is denying that by now :)

> Even if we were to get rid of all OverflowErrors resulting from integer
> operations in Python, there are going to be some C extensions--including
> some in the Python standard library--that will store 32-bit integers.
> Modules such as array and struct will still raise it, and probably other
> modules were a long integer sometimes doesn't make sense (socket, for
> instance).  itertools.count() should work for arbitrary integers, though.

Agreed. I was lookind at itertoolsmodule.c, and even for my very
limited C knowlegment, it does not seem to be too hard.
Anyway: http://bugs.python.org/issue1165


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


-- 
http://www.advogato.org/person/eopadoan/
Bookmarks: http://del.icio.us/edcrypt
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Extended slicing and Ellipsis - where are they used?

2007-09-15 Thread Rodney Maxwell
On Sep 13, 5:50 pm, James Stroud <[EMAIL PROTECTED]> wrote:
> Rodney Maxwell wrote:
> > The following are apparently legal Python syntactically:
> >L[1:3, 8:10]
> >L[1, ..., 5:-2]
>
> > But they don't seem to work on lists:
>  l = [0,1,2,3]
>  l[0:2,3]
> > Traceback (most recent call last):
> >   File "", line 1, in 
> > TypeError: list indices must be integers
>  l[...]
> > Traceback (most recent call last):
> >   File "", line 1, in 
> > TypeError: list indices must be integers
>
> > So where is this extended slicing used?
>
> AFAICT this syntax is not used in the standard library. However, the
> mega-beauty of it is that you can make use of it in your own classes:
>
> py> class Bob(list):
> ...   def __getitem__(self, i):
> ... try:
> ...   return [list.__getitem__(self, j) for j in i]
> ... except TypeError:
> ...   return list.__getitem__(self, i)
> ...
> py> b = Bob(xrange(15, 30))
> py> b[3, 5, 7, 13]
> [18, 20, 22, 28]
>
> James

Or
>>> b[0:3, 5, 9]
[[15, 16, 17], 20, 24]

which is what I was looking for in the first place.

Thanks,
Rodney

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


Re: Extended slicing and Ellipsis - where are they used?

2007-09-15 Thread Rodney Maxwell
On Sep 13, 5:50 pm, James Stroud <[EMAIL PROTECTED]> wrote:
> Rodney Maxwell wrote:
> > The following are apparently legal Python syntactically:
> >L[1:3, 8:10]
> >L[1, ..., 5:-2]
>
> > But they don't seem to work on lists:
>  l = [0,1,2,3]
>  l[0:2,3]
> > Traceback (most recent call last):
> >   File "", line 1, in 
> > TypeError: list indices must be integers
>  l[...]
> > Traceback (most recent call last):
> >   File "", line 1, in 
> > TypeError: list indices must be integers
>
> > So where is this extended slicing used?
>
> AFAICT this syntax is not used in the standard library. However, the
> mega-beauty of it is that you can make use of it in your own classes:
>
> py> class Bob(list):
> ...   def __getitem__(self, i):
> ... try:
> ...   return [list.__getitem__(self, j) for j in i]
> ... except TypeError:
> ...   return list.__getitem__(self, i)
> ...
> py> b = Bob(xrange(15, 30))
> py> b[3, 5, 7, 13]
> [18, 20, 22, 28]
>
> James

Or
>>> b[0:3, 5, 9]
[[15, 16, 17], 20, 24]

which is what I was looking for in the first place.

Thanks,
Rodney

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


Re: regexp search on infinite string?

2007-09-15 Thread Paddy
On Sep 15, 2:07 pm, John Machin <[EMAIL PROTECTED]> wrote:
> On Sep 15, 10:56 pm, Paddy <[EMAIL PROTECTED]> wrote:
>
>
>
> > On Sep 14, 9:49 pm, Paddy <[EMAIL PROTECTED]> wrote:
>
> > > Lets say i have a generator running that generates successive
> > > characters of a 'string'>From what I know, if I want to do a regexp 
> > > search for a pattern of
>
> > > characters then I would have to 'freeze' the generator  and pass the
> > > characters so far to re.search.
> > > It is expensive to create successive characters, but caching could be
> > > used for past characters. is it possible to wrap the generator in a
> > > class, possibly inheriting from string, that would allow the regexp
> > > searching of the string but without terminating the generator? In
> > > other words duck typing for the usual string object needed by
> > > re.search?
>
> > > - Paddy.
>
> > There seems to be no way of breaking into the re library accessing
> > characters from the string:
>
> > >>> class S(str):
>
> > ... def __getitem__(self, *a):
> > ... print "getitem:",a
> > ... return str.__getitem__(self, *a)
> > ... def __get__(self, *a):
> > ... print "get:",a
> > ... return str.__get__(self, *a)
> > ...>>> s = S('sdasd')
> > >>> m = re.search('as', s); m.span()
> > (2, 4)
> > >>> m = sre.search('as', s); m.span()
> > (2, 4)
> > >>> class A(array.array):
>
> > ... def __getitem__(self, *a):
> > ... print "getitem:",a
> > ... return str.__getitem__(self, *a)
> > ... def __get__(self, *a):
> > ... print "get:",a
> > ... return str.__get__(self, *a)
> > ...
>
> > >>> s = A('c','sdasd')
> > >>> m = re.search('as', s); m.span()
> > (2, 4)
> > >>> m = sre.search('as', s); m.span()
> > (2, 4)
>
> > - Paddy.
>
> That would no doubt be because it either copies the input [we hope
> not] or more likely because it hands off the grunt work to a C module
> (_sre).

Yes, it seems to need a buffer/string so probably access a contiguous
area of memory from C.
o
>
> Why do you want to "break into" it, anyway?

A simulation generates stream of data that could be gigabytes from
which I'd like to find interesting bits by doing a regexp search. I
could use megabyte length sliding buffers, and probably will have to.

- Paddy.

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


Re: Python 3K or Python 2.9?

2007-09-15 Thread Erik Jones
On Sep 14, 2007, at 11:54 PM, David Trudgett wrote:

> TheFlyingDutchman <[EMAIL PROTECTED]> writes:
>
>> The confusing way about the current Python method when you first
>> encounter it is
>>  why is "self" being passed in when you write the function but not
>> when you call it. If the compiler is smart enough to know that
>>
>> a = MyClass()
>> a.SomeFunction(12)
>>
>> SomeFunction() has a "self" implicitly added to the parameter  
>> list, it
>> seems that it should be smart enough to know that a function defined
>> in a class has a "self" implicitly added to the parameter list.
>
> Several languages use the "object.method(args)" form, which is  
> syntactic
> sugar for "method(object, other_args)" which Ada, for instance, uses.
> Knowing this clears up half the confusion (the object /is/ passed as a
> parameter whichever syntax is used).
>
> The other half of the confusion is cleared up by considering that
> Python methods are ordinary functions that don't magically "know" in
> which "class" context they are executing: they must be told via the
> first parameter.

Yes, that is really the crux of the issue, though.  While the former  
may be syntactic sugar for the latter, once any syntactic sugar has  
become prevalent enough, it becomes the expected norm and the latter  
becomes clutter or, at best, awkward.  It's something that really  
just takes a little use until you get to the point where you don't  
usually think of it but, every so often, the thought creeps in.  I'm  
not complaining, just pointing out if you step out of this particular  
box, you'll realize that it really is a pointless one.  Saying,  
"because that's how Python does it" may be the only valid reason, but  
that argument is about on par with a six year old's "just because...".



Erik Jones

Software Developer | Emma®
[EMAIL PROTECTED]
800.595.4401 or 615.292.5888
615.292.0777 (fax)

Emma helps organizations everywhere communicate & market in style.
Visit us online at http://www.myemma.com


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


Re: how to join array of integers?

2007-09-15 Thread Grant Edwards
On 2007-09-15, Arnau Sanchez <[EMAIL PROTECTED]> wrote:

>>> in Python... is the method to use ",".join() ?  but then it
>>> must take a list of strings... not integers...
>>>
>>> any fast method?
>
> > print ''.join([str(i) for i in [1,2,3]])
>
> It's better to use generator comprehension instead of LC:
>
> ",".join(str(i) for i in [1, 2, 3])
>
> Or, if you happen to like the itertools modules:
>
> from itertools import imap
> ",".join(imap(str, [1, 2, 3]))

It's nice people have invented so many ways to spell the
builting "map" ;)

>>> ",".join(map(str,[1,2,3]))
'1,2,3'

-- 
Grant Edwards   grante Yow!  Thousands of days of
  at   civilians... have produced
   visi.coma... feeling for the
   aesthetic modules --
-- 
http://mail.python.org/mailman/listinfo/python-list


RFC-3986 or 2396 implementation in Python?

2007-09-15 Thread js
Hi list.

Is there any module that is compatible with RFC-3986 or 2396, which is like
Perl's URI module(http://search.cpan.org/~gaas/URI-1.35/URI.pm)?

I like to normalize lots of URIs I've got in  my database to make them
all unique ones.

Thank you in advance.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how to join array of integers?

2007-09-15 Thread Erik Jones

On Sep 15, 2007, at 8:56 AM, Arnau Sanchez wrote:

> js escribió:
>
>>> On 9/15/07, Summercool <[EMAIL PROTECTED]> wrote:
>
>>> in Python... is the method to use  ",".join() ?  but then it must  
>>> take
>>> a list of strings... not integers...
>>>
>>> any fast method?
>
>> print ''.join([str(i) for i in [1,2,3]])
>
> It's better to use generator comprehension instead of LC:
>
> ",".join(str(i) for i in [1, 2, 3])

Why is that?  That entire expression must be evaluated to obtain the  
result, so what is the advantage of using a generator comprehension  
v. a list comprehension?


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


Re: how to join array of integers?

2007-09-15 Thread Erik Jones
On Sep 15, 2007, at 11:07 AM, Grant Edwards wrote:

> On 2007-09-15, Arnau Sanchez <[EMAIL PROTECTED]> wrote:
>
 in Python... is the method to use ",".join() ?  but then it
 must take a list of strings... not integers...

 any fast method?
>>
>>> print ''.join([str(i) for i in [1,2,3]])
>>
>> It's better to use generator comprehension instead of LC:
>>
>> ",".join(str(i) for i in [1, 2, 3])
>>
>> Or, if you happen to like the itertools modules:
>>
>> from itertools import imap
>> ",".join(imap(str, [1, 2, 3]))
>
> It's nice people have invented so many ways to spell the
> builting "map" ;)
>
 ",".join(map(str,[1,2,3]))
> '1,2,3'

IIRC, map's status as a builtin is going away.

Erik Jones

Software Developer | Emma®
[EMAIL PROTECTED]
800.595.4401 or 615.292.5888
615.292.0777 (fax)

Emma helps organizations everywhere communicate & market in style.
Visit us online at http://www.myemma.com


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


Re: how to join array of integers?

2007-09-15 Thread Grant Edwards
On 2007-09-15, Erik Jones <[EMAIL PROTECTED]> wrote:

>>> print ''.join([str(i) for i in [1,2,3]])
>>
>> It's better to use generator comprehension instead of LC:
>>
>> ",".join(str(i) for i in [1, 2, 3])
>
> Why is that?  That entire expression must be evaluated to obtain the  
> result, so what is the advantage of using a generator comprehension  
> v. a list comprehension?

The generator avoids creating the intermediate list -- it
generates the intermediate values on the fly. For short
sequences it probably doesn't matter much.  For a very long
list it's probably noticable.

-- 
Grant Edwards   grante Yow!  Mr and Mrs PED, can I
  at   borrow 26.7% of the RAYON
   visi.comTEXTILE production of the
   INDONESIAN archipelago?
-- 
http://mail.python.org/mailman/listinfo/python-list


Need a guitar?

2007-09-15 Thread nutsbreaker1
Free guitars here!!

http://freeguitars.blogspot.com/

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


find and remove "\" character from string

2007-09-15 Thread Konstantinos Pachopoulos
Hi,
i have the following string s and the following code, which doesn't 
successfully remove the "\", but sucessfully removes the "\\".

 >>> s="Sad\\asd\asd"
 >>> newS=""
 >>> for i in s:
... if i!="\\":
... newS=newS+i
...
 >>> newS
'Sadasd\x07sd'

I have also read the following, but i do not understand the "...and the 
remaining characters have been mapped through the given translation 
table, which must be a string of length 256". Can some explain?

*translate*(table[, deletechars])

Return a copy of the string where all characters occurring in the
optional argument deletechars are removed, and the remaining
characters have been mapped through the given translation table,
which must be a string of length 256.

For Unicode objects, the translate() method does not accept the
optional deletechars argument. Instead, it returns a copy of the s
where all characters have been mapped through the given translation
table which must be a mapping of Unicode ordinals to Unicode
ordinals, Unicode strings or |None|. Unmapped characters are left
untouched. Characters mapped to |None| are deleted. Note, a more
flexible approach is to create a custom character mapping codec
using the codecs 
module (see encodings.cp1251 for an example).







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


Re: find and remove "\" character from string

2007-09-15 Thread Stefan Behnel
Konstantinos Pachopoulos wrote:
> i have the following string s and the following code, which doesn't
> successfully remove the "\", but sucessfully removes the "\\".
> 
 s="Sad\\asd\asd"
 newS=""
 for i in s:
> ... if i!="\\":
> ... newS=newS+i

I'm not quite sure what you're trying to achieve, but I'd use

>>> r"\\a\\b\c".replace("", "")
'ab\\c'

>>> r"\\a\\b\c".replace("\\", "")
'abc'

Note that "\\" in the source is unescaped to "\" in the string. Use r"\\" to
prevent that.

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


Re: how to join array of integers?

2007-09-15 Thread Eduardo O. Padoan
> > It's nice people have invented so many ways to spell the
> > builting "map" ;)
> >
>  ",".join(map(str,[1,2,3]))
> > '1,2,3'
>
> IIRC, map's status as a builtin is going away.

Actually, py3k built-in map == itertools.imap

>>> map(str, [])


-- 
http://www.advogato.org/person/eopadoan/
Bookmarks: http://del.icio.us/edcrypt
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: c interfacing in 2.5

2007-09-15 Thread Szabolcs Nagy

Diez B. Roggisch wrote:
> ctypes is for C. Where it is great to use.

if you need simple wrappers then swig and ctypes are both good since
they can generate it for you

pyrex is also good for wrapping and for writing c extension code

> If you need C++-wrapping, I recommend SIP.

i recommend py++ for wrapping c++

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


Re: how to join array of integers?

2007-09-15 Thread tokland
Grant Edwards ha escrito:

> > Or, if you happen to like the itertools modules:
> >
> > from itertools import imap
> > ",".join(imap(str, [1, 2, 3]))
>
> It's nice people have invented so many ways to spell the
> builting "map" ;)

Did you wonder why the Python developers bother to implement "imap" if
"map" was already there?

> >>> ",".join(map(str,[1,2,3]))
> '1,2,3'

Of course the result is the same, but "map" returns a list while
"itertools.imap" returns an iterator. Fortunately, "map" will become
lazy on Py3000:

http://mail.python.org/pipermail/python-3000/2007-August/009207.html

As you said, it won't be noticeable for short lists, but it's a good
programming practice to use generators instead of lists (if you don't
really need a list!)

arnau

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


World's most popular traveling destinations

2007-09-15 Thread nutsbreaker4
http://world-traveling-destinations.blogspot.com/

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


Re: how to join array of integers?

2007-09-15 Thread Robert Kern
Grant Edwards wrote:
> On 2007-09-15, Erik Jones <[EMAIL PROTECTED]> wrote:
> 
 print ''.join([str(i) for i in [1,2,3]])
>>> It's better to use generator comprehension instead of LC:
>>>
>>> ",".join(str(i) for i in [1, 2, 3])
>> Why is that?  That entire expression must be evaluated to obtain the  
>> result, so what is the advantage of using a generator comprehension  
>> v. a list comprehension?
> 
> The generator avoids creating the intermediate list -- it
> generates the intermediate values on the fly. For short
> sequences it probably doesn't matter much.  For a very long
> list it's probably noticable.

Not true. str.join() creates a list from the iterator if it is not already a
list or a tuple. In Objects/stringobject.c, look at string_join(); it calls
PySequence_Fast() on the argument. Looking in Objects/abstract.c, we see that
PySequence_Fast() short-circuits lists and tuples but builds a full list from
the iterable otherwise.

map() seems to reliably be the fastest option, and list comprehensions seem to
slightly edge out generator comprehensions if you do the timings.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco

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


Latest software here!!!!!

2007-09-15 Thread freesoftwareweb1
http://freesoftwareupgrades.blogspot.com/

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


Python statements not forcing whitespace is messy?

2007-09-15 Thread buffi
Am I the only one that thinks that python statements should force
whitespace before and after them?

Right now this is not enforced and for an example these statements are
valid

print"hello"
"foo"if"bar"else"foobar"
for(x,y)in[(1,2),(3,4)]:print(x,y)
[(y)for(x,y)in[("foo",2),("bar",4)]if"foo"in(x)]

...and so on.

I know that writing code like this really shouldn't be done but
wouldn't it be a good idea to enforce the use of whitespace around
statements?

(I wrote a short blog post about this here http://blog.buffis.com/?p=55
but thought I would post here as well to see what other developers
think)
- Björn Kempén

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


Re: find and remove "\" character from string

2007-09-15 Thread Steve Holden
Konstantinos Pachopoulos wrote:
> Hi,
> i have the following string s and the following code, which doesn't 
> successfully remove the "\", but sucessfully removes the "\\".
> 
>  >>> s="Sad\\asd\asd"
>  >>> newS=""
>  >>> for i in s:
> ... if i!="\\":
> ... newS=newS+i
> ...
>  >>> newS
> 'Sadasd\x07sd'
> 
In actual fact there was just a single backslash in s to start with. If 
you read the documentation carefully at

   http://docs.python.org/ref/strings.html

(though it's the language reference manual, and therefore not 
necessarily suitable reading for beginners)  you will see that the "\\" 
represents a single backslash character and \a represents an ASCII BEL 
character (whose decimal value is 7, and which the interpreter 
represents as the hexadecimal escape string \x07).

So the characters in s were S a d \ a s d \x07 s d and you shoudl have 
seen len(s) == 10.

As has already been mentioned, the shortest way to do what you want would be

newS = s.replace("\\", "")

> I have also read the following, but i do not understand the "...and the 
> remaining characters have been mapped through the given translation 
> table, which must be a string of length 256". Can some explain?
> 
> *translate*(  table[, deletechars])
> 
> Return a copy of the string where all characters occurring in the
> optional argument deletechars are removed, and the remaining
> characters have been mapped through the given translation table,
> which must be a string of length 256.
> 
> For Unicode objects, the translate() method does not accept the
> optional deletechars argument. Instead, it returns a copy of the s
> where all characters have been mapped through the given translation
> table which must be a mapping of Unicode ordinals to Unicode
> ordinals, Unicode strings or |None|. Unmapped characters are left
> untouched. Characters mapped to |None| are deleted. Note, a more
> flexible approach is to create a custom character mapping codec
> using the codecs 
> module (see encodings.cp1251 for an example).
> 
The translate() string method uses the numeric represetation of each 
character as an index into the translation table. So a null translation 
table can be constructed using

 >>> t = "".join(chr(i) for i in range(256))
 >>> t
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\
x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f 
!"#$%&\'()*+,-./0123456789:;<=>[EMAIL PROTECTED]
DEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83
\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97
\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab
\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf
\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3
\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7
\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb
\xfc\xfd\xfe\xff'
 >>>

(the above output will look a little screwy in the mail because of odd 
line wrapping).

So hopefully you could then achieve the same effect (at vastly greater 
complexity than the first solution) using

 >>> s="Sad\\asd\asd"
 >>> len(s)
10
 >>> newS = s.translate(t, "\\")
 >>> newS
'Sadasd\x07sd'
 >>>

You would probably only want to use that method if you were actually 
translating some of the characters at the same time.

regards
  Steve
-- 
Steve Holden+1 571 484 6266   +1 800 494 3119
Holden Web LLC/Ltd   http://www.holdenweb.com
Skype: holdenweb  http://del.icio.us/steve.holden

Sorry, the dog ate my .sigline

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


Re: (wxPython) wx.ProgressDialog - how to cancel out of?

2007-09-15 Thread kyosohma
On Sep 15, 12:57 am, Terry Carroll <[EMAIL PROTECTED]> wrote:
> I'm trying to use wx.ProgressBar, and the cancel button is not
> responding.
>
> Here is a simple program that exhibits the problem:
>
> #
> import  wx
> import time
>
> max = 10
> app = wx.PySimpleApp()
> dlg = wx.ProgressDialog("Progress dialog example",
>"variables to be shown here",
>maximum = max,
>style = wx.PD_CAN_ABORT
> | wx.PD_CAN_SKIP
> #| wx.PD_APP_MODAL
> | wx.PD_ELAPSED_TIME
> | wx.PD_ESTIMATED_TIME
> | wx.PD_REMAINING_TIME
> )
>
> keepGoing = True
> skip = False
> count = 0
>
> while keepGoing and count < max:
> count += 1
> wx.MilliSleep(1000)
> #time.sleep(1)
> newtext = "(before) count: %s, keepGoing: %s, skip: %s " % \
>   (count, keepGoing, skip)
> print newtext
> (keepGoing, skip) = dlg.Update(count, newtext)
> newtext = "(after) count: %s, keepGoing: %s, skip: %s " % \
>   (count, keepGoing, skip)
> print newtext
> dlg.Destroy()
> #
>
> The dialog looks right when this runs, but
>
> What's right: I get a progress bar;  it includes "Skip" and "Cancel"
> buttons; it shows 10 seconds of progress, and updates once per second
> with the variables' values on each iteration.
>
> What's wrong is that I can't get clicking on the "Skip" or "Cancel"
> buttons to have any effect.  Instead, as soon as the dialog displays,
> I get an hourglass, and it doesn't matter what I click on.  Here's
> what the print statements display, consistently, regardless of what I
> try to click or whether I click nothing at all:
>
> I:\python>test1.py
> (before) count: 1, keepGoing: True, skip: False
> (after) count: 1, keepGoing: True, skip: False
> (before) count: 2, keepGoing: True, skip: False
> (after) count: 2, keepGoing: True, skip: True
> (before) count: 3, keepGoing: True, skip: True
> (after) count: 3, keepGoing: True, skip: True
> (before) count: 4, keepGoing: True, skip: True
> (after) count: 4, keepGoing: True, skip: True
> (before) count: 5, keepGoing: True, skip: True
> (after) count: 5, keepGoing: True, skip: True
> (before) count: 6, keepGoing: True, skip: True
> (after) count: 6, keepGoing: True, skip: True
> (before) count: 7, keepGoing: True, skip: True
> (after) count: 7, keepGoing: True, skip: True
> (before) count: 8, keepGoing: True, skip: True
> (after) count: 8, keepGoing: True, skip: True
> (before) count: 9, keepGoing: True, skip: True
> (after) count: 9, keepGoing: True, skip: True
> (before) count: 10, keepGoing: True, skip: True
> (after) count: 10, keepGoing: True, skip: True
>
> Two oddities here:
>
> 1) As I read the docs, the keepGoing variable should be set to True,
> unless I click on "Cancel," in which case it should be set to False
> (which would end the loop).  That doesn't happen.  This is really what
> I'm most concerned here with.
>
> 2) The variable "skip: set to False on the first iteration, and then
> set to True on subsequent iterations?  Note that this happens even if
> no buttons are selected.  This is just a weirdness to me, and not my
> main concern, but I thought I'd mention it in case it's relevant.
>
> You can see some variations in the commented-out code that I tried;
> they did not help.
>
> Relevant software and releases:
>
> OS: Windows XP Home Edition, Version 2002, SP2
> Python: ActivePython 2.5.0.0
> wxPython: 2.8.1.1 (msw-unicode)
>
> Any help appreciated.

I'm not seeing the error either. The code looks very similar to the
example in the demo. Maybe you can look at it and see the difference?
The only thing I see is that the demo embeds the ProgressDialog into a
Panel object.

You should probably post this to the wxPython mailing group:
http://wxpython.org/maillist.php

Mike

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


Re: Python statements not forcing whitespace is messy?

2007-09-15 Thread James Stroud
buffi wrote:
> Am I the only one that thinks that python statements should force
> whitespace before and after them?
> 
> Right now this is not enforced and for an example these statements are
> valid
> 
> print"hello"
> "foo"if"bar"else"foobar"
> for(x,y)in[(1,2),(3,4)]:print(x,y)
> [(y)for(x,y)in[("foo",2),("bar",4)]if"foo"in(x)]
> 
> ...and so on.
> 
> I know that writing code like this really shouldn't be done but
> wouldn't it be a good idea to enforce the use of whitespace around
> statements?
> 
> (I wrote a short blog post about this here http://blog.buffis.com/?p=55
> but thought I would post here as well to see what other developers
> think)
> - Björn Kempén
> 

You may have a point--but on the other hand, this may be purposefully 
allowed help to recruit perl programmers.

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


calling locale.setlocale repeatedly

2007-09-15 Thread Michael Goerz
Hi,

From
http://www.pyzine.com/Issue008/Section_Articles/article_Encodings.html#guessing-the-encoding:
> The way to access the information about the "normal" encoding used on the 
> current computer is through the locale module. Before using locale to 
> retrieve the information you want, you need to call 
> locale.setlocale(locale.LC_ALL, ''). Because of the sensitivity of the 
> underlying C locale module on some platforms, this should only be done once.

Why should the call
locale.setlocale(locale.LC_ALL, '')
only be made once? What exactly is the "sensitivity of the underlying C
locale module"?


Thanks,
Michael
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python statements not forcing whitespace is messy?

2007-09-15 Thread J. Cliff Dyer
buffi wrote:
> Am I the only one that thinks that python statements should force
> whitespace before and after them?
>
> Right now this is not enforced and for an example these statements are
> valid
>
> print"hello"
> "foo"if"bar"else"foobar"
> for(x,y)in[(1,2),(3,4)]:print(x,y)
> [(y)for(x,y)in[("foo",2),("bar",4)]if"foo"in(x)]
>
> ...and so on.
>

On the other hand, this is just as bad:

[ ( y ) for ( x , y ) in [ ( "foo" , 2 ) , ( "bar" , 4 ) ] if "foo" in (
x ) ]


And I'd hate to have to remember all of the rules for what can go
together and what can't, especially when it comes time to debug.  No.
I don't think it should be forced, but maybe put it in PEP8 or PEP3008.

Also, the only thing I find thoroughly disagreeable in all of that
mess, is the run-ins involving " characters.  The rest are at least
clear at a glance what belongs where.

Also, would you require the following?

my_function (swallow='European')

Because that is just an awful use of whitespace.

Cheers,
Cliff



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


Re: Python statements not forcing whitespace is messy?

2007-09-15 Thread Eduardo O. Padoan
On 9/15/07, J. Cliff Dyer <[EMAIL PROTECTED]> wrote:
> And I'd hate to have to remember all of the rules for what can go
> together and what can't, especially when it comes time to debug.  No.
> I don't think it should be forced, but maybe put it in PEP8 or PEP3008.

It is: see "Whitespace in Expressions and Statements" in PEP 8.


-- 
http://www.advogato.org/person/eopadoan/
Bookmarks: http://del.icio.us/edcrypt
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: find and remove "\" character from string

2007-09-15 Thread I V
On Sat, 15 Sep 2007 19:34:45 +0300, Konstantinos Pachopoulos wrote:
> Hi,
> i have the following string s and the following code, which doesn't
> successfully remove the "\", but sucessfully removes the "\\".

There is no \\ in the string; there's one \ , which gets succesfully 
removed.

>  >>> s="Sad\\asd\asd"

When you write a string in the source code \\ gets changed to \ and \a 
gets changed to "ASCII Bell (BEL)" (that's what the docs say), which is a 
(non-printable) control code that is supposed to make the terminal beep.

>  >>> newS=""
>  >>> for i in s:
> ... if i!="\\":

Here, your test is true if i is not \

> ... newS=newS+i
> ...
>  >>> newS
> 'Sadasd\x07sd'

And here, you have a string containing no backslashes, but containing a 
character with ASCII code 7; it turns out that ASCII code 7 is the "ASCII 
Bell", i.e., the character that you added to the string when you wrote 
'\a'.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Just bought Python in a Nutshell

2007-09-15 Thread Lamonte Harris
Wow I just got it, and its nice doesn't even look used god damn. :D.

On 9/14/07, Lamonte Harris <[EMAIL PROTECTED]> wrote:
>
> Lol, you bought it,  dude theres not one left imho.  When I bought it, it
> still said 1 More left Lol...mines should be her no less then a hour -.-...
> Taking SO LONG.
>
> On 9/14/07, Danyelle Gragsone <[EMAIL PROTECTED]> wrote:
> >
> > Luckily that site still had one left .. so i brought it :D.  I can
> > always use another good and CHEAP book.
> >
> > Danyelle
> > --
> > http://mail.python.org/mailman/listinfo/python-list
> >
>
>
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Just bought Python in a Nutshell

2007-09-15 Thread Danyelle Gragsone
awesome!

I should see it in about 2 wks.. im poor.  So I choose super snail mail.

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


how could change backcolor of console?

2007-09-15 Thread wanpor
  Hi,everyone: I am a c programmer,and want using Python instead of C
I  can  change backcolor using  C,like this:

 textbackground(color); 

How can I do in Python?


Best regards





点 击 此 处!免 费 试 玩 07 年 最 受 期 待 的 游 戏 大 作 ! -- 
http://mail.python.org/mailman/listinfo/python-list

problems using pythom tempfile module

2007-09-15 Thread [EMAIL PROTECTED]
Hello everyone,

I'm trying to test the tempfile module with the following script,
which basically creates a temporary file, fills the file with some
test data and prints it.

import tempfile

t = tempfile.TemporaryFile()
t.write("lalalala")
t.flush()
print t.read()

Unfortunately, the print statement gives me an empty string. Can
somebody tell me what I'm doing wrong ?


regards Samir

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


Re: Python statements not forcing whitespace is messy?

2007-09-15 Thread buffi
On Sep 15, 10:11 pm, "J. Cliff Dyer" <[EMAIL PROTECTED]> wrote:
> buffi wrote:
> > Am I the only one that thinks that python statements should force
> > whitespace before and after them?
>
> > Right now this is not enforced and for an example these statements are
> > valid
>
> > print"hello"
> > "foo"if"bar"else"foobar"
> > for(x,y)in[(1,2),(3,4)]:print(x,y)
> > [(y)for(x,y)in[("foo",2),("bar",4)]if"foo"in(x)]
>
> > ...and so on.
>
> On the other hand, this is just as bad:
>
> [ ( y ) for ( x , y ) in [ ( "foo" , 2 ) , ( "bar" , 4 ) ] if "foo" in (
> x ) ]
>
> And I'd hate to have to remember all of the rules for what can go
> together and what can't, especially when it comes time to debug.  No.
> I don't think it should be forced, but maybe put it in PEP8 or PEP3008.
>
> Also, the only thing I find thoroughly disagreeable in all of that
> mess, is the run-ins involving " characters.  The rest are at least
> clear at a glance what belongs where.
>
> Also, would you require the following?
>
> my_function (swallow='European')
>
> Because that is just an awful use of whitespace.
>
> Cheers,
> Cliff

I believe that having whitespace around the builtin statements, and
having whitespace around everything is pretty different.

There would be no downside whatsoever to enforcing this, except for
backwards incompatibility (which is a rather huge downside but well...
py3k is gonna break everything anyways). There obviously shouldnt be
any limit to the maximum amount of whitespace used around statements
(due to formatting and so on), but allowing stuff like print"hello" is
just horrible.

- Björn Kempén

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


Re: how could change backcolor of console?

2007-09-15 Thread buffi
On Sep 15, 3:55 pm, [EMAIL PROTECTED] wrote:
>   Hi,everyone: I am a c programmer,and want using Python instead of C
> I  can  change backcolor using  C,like this:
>
>  textbackground(color);
>
> How can I do in Python?
>
> Best regards
>
> 点 击 此 处!免 费 试 玩 07 年 最 受 期 待 的 游 戏 大 作 !

textbackground() is not part of the C programming language but rather
a part of an rather old module for msdos.
http://en.wikipedia.org/wiki/Conio.h

If you want terminal colors in python you can use the curses module
but I doubt that it will work in windows.
http://docs.python.org/lib/module-curses.html

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

Re: problems using pythom tempfile module

2007-09-15 Thread buffi
On Sep 15, 11:11 pm, "[EMAIL PROTECTED]"
<[EMAIL PROTECTED]> wrote:
> Hello everyone,
>
> I'm trying to test the tempfile module with the following script,
> which basically creates a temporary file, fills the file with some
> test data and prints it.
>
> import tempfile
>
> t = tempfile.TemporaryFile()
> t.write("lalalala")
> t.flush()
> print t.read()
>
> Unfortunately, the print statement gives me an empty string. Can
> somebody tell me what I'm doing wrong ?
>
> regards Samir

Do a t.seek(0) before you do the read to "rewind" the file and then it
should work.

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


curses: x, y positioning

2007-09-15 Thread 7stud
I can't see to get any y, x coordinates to work with curses.  Here is
an example:

import curses

def my_program(screen):
while True:
ch = screen.getch()
if ch == ord("q"):
break
if ch <= 255:
screen.addstr(30, 10, "*%s*" % chr(ch))
screen.refresh()

curses.wrapper(my_program)

Here is the result:

Traceback (most recent call last):
  File "2pythontest.py", line 12, in ?
curses.wrapper(my_program)
  File "/Library/Frameworks/Python.framework/Versions/2.4//lib/
python2.4/curses/wrapper.py", line 44, in wrapper
return func(stdscr, *args, **kwds)
  File "2pythontest.py", line 9, in my_program
screen.addstr(30, 10, "*%s*" % chr(ch))
_curses.error: addstr() returned ERR

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


Patent application

2007-09-15 Thread canadaimmigrationlaw
US patent application services:

http://www.pinskylaw.ca/Practice/OntarioTorontoLawyers/business_patents.htm

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


Re: Python statements not forcing whitespace is messy?

2007-09-15 Thread Steve Holden
buffi wrote:
> On Sep 15, 10:11 pm, "J. Cliff Dyer" <[EMAIL PROTECTED]> wrote:
>> buffi wrote:
>>> Am I the only one that thinks that python statements should force
>>> whitespace before and after them?
>>> Right now this is not enforced and for an example these statements are
>>> valid
>>> print"hello"
>>> "foo"if"bar"else"foobar"
>>> for(x,y)in[(1,2),(3,4)]:print(x,y)
>>> [(y)for(x,y)in[("foo",2),("bar",4)]if"foo"in(x)]
>>> ...and so on.
>> On the other hand, this is just as bad:
>>
>> [ ( y ) for ( x , y ) in [ ( "foo" , 2 ) , ( "bar" , 4 ) ] if "foo" in (
>> x ) ]
>>
>> And I'd hate to have to remember all of the rules for what can go
>> together and what can't, especially when it comes time to debug.  No.
>> I don't think it should be forced, but maybe put it in PEP8 or PEP3008.
>>
>> Also, the only thing I find thoroughly disagreeable in all of that
>> mess, is the run-ins involving " characters.  The rest are at least
>> clear at a glance what belongs where.
>>
>> Also, would you require the following?
>>
>> my_function (swallow='European')
>>
>> Because that is just an awful use of whitespace.
>>
>> Cheers,
>> Cliff
> 
> I believe that having whitespace around the builtin statements, and
> having whitespace around everything is pretty different.
> 
> There would be no downside whatsoever to enforcing this, except for
> backwards incompatibility (which is a rather huge downside but well...
> py3k is gonna break everything anyways). There obviously shouldnt be
> any limit to the maximum amount of whitespace used around statements
> (due to formatting and so on), but allowing stuff like print"hello" is
> just horrible.
> 
If you don't like it then don't write it. I've been reading this group 
on and off for about ten years and I believe your email is the first to 
point out that this is possible. Clearly it isn't something that happens 
a lot, and I don't know why you have a bug up your ass about it, as the 
Americans say.

The Python philosophy is to be permissive, and to expect individual 
users to write readable Python. Since they obviously do (one message in 
ten years providing a counter-example) I think you are wasting your time 
and energy on this.

regards
  Steve
-- 
Steve Holden+1 571 484 6266   +1 800 494 3119
Holden Web LLC/Ltd   http://www.holdenweb.com
Skype: holdenweb  http://del.icio.us/steve.holden

Sorry, the dog ate my .sigline

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


Needless copying in iterations?

2007-09-15 Thread James Stroud
Hello all,

I was staring at a segment of code that looked like this today:

for something in stuff[x:y]:
  whatever(something)

and was wondering if the compiler really made a copy of the slice from 
stuff as the code seems to suggest, or does it find some way to produce 
an iterator without the need to make a copy (if stuff is a built-in 
sequence type)? Or would it be more efficient to do the more clumsy (in 
my opinion):

for i in xrange(x, y):
  whatever(stuff[i])

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


Re: Python statements not forcing whitespace is messy?

2007-09-15 Thread buffi
On Sep 15, 11:49 pm, Steve Holden <[EMAIL PROTECTED]> wrote:
> buffi wrote:
> > On Sep 15, 10:11 pm, "J. Cliff Dyer" <[EMAIL PROTECTED]> wrote:
> >> buffi wrote:
> >>> Am I the only one that thinks that python statements should force
> >>> whitespace before and after them?
> >>> Right now this is not enforced and for an example these statements are
> >>> valid
> >>> print"hello"
> >>> "foo"if"bar"else"foobar"
> >>> for(x,y)in[(1,2),(3,4)]:print(x,y)
> >>> [(y)for(x,y)in[("foo",2),("bar",4)]if"foo"in(x)]
> >>> ...and so on.
> >> On the other hand, this is just as bad:
>
> >> [ ( y ) for ( x , y ) in [ ( "foo" , 2 ) , ( "bar" , 4 ) ] if "foo" in (
> >> x ) ]
>
> >> And I'd hate to have to remember all of the rules for what can go
> >> together and what can't, especially when it comes time to debug.  No.
> >> I don't think it should be forced, but maybe put it in PEP8 or PEP3008.
>
> >> Also, the only thing I find thoroughly disagreeable in all of that
> >> mess, is the run-ins involving " characters.  The rest are at least
> >> clear at a glance what belongs where.
>
> >> Also, would you require the following?
>
> >> my_function (swallow='European')
>
> >> Because that is just an awful use of whitespace.
>
> >> Cheers,
> >> Cliff
>
> > I believe that having whitespace around the builtin statements, and
> > having whitespace around everything is pretty different.
>
> > There would be no downside whatsoever to enforcing this, except for
> > backwards incompatibility (which is a rather huge downside but well...
> > py3k is gonna break everything anyways). There obviously shouldnt be
> > any limit to the maximum amount of whitespace used around statements
> > (due to formatting and so on), but allowing stuff like print"hello" is
> > just horrible.
>
> If you don't like it then don't write it. I've been reading this group
> on and off for about ten years and I believe your email is the first to
> point out that this is possible. Clearly it isn't something that happens
> a lot, and I don't know why you have a bug up your ass about it, as the
> Americans say.
>
> The Python philosophy is to be permissive, and to expect individual
> users to write readable Python. Since they obviously do (one message in
> ten years providing a counter-example) I think you are wasting your time
> and energy on this.
>
> regards
>   Steve
> --
> Steve Holden+1 571 484 6266   +1 800 494 3119
> Holden Web LLC/Ltd  http://www.holdenweb.com
> Skype: holdenweb  http://del.icio.us/steve.holden
>
> Sorry, the dog ate my .sigline

I actually found out about this myself while grading student labs. I
myself didn't even know that you could write statements like this
until then, but since some students does it that means that there
should be other people out there as well that does it.

And I can't say that I agree about "The Python philosophy being
permissive, and to expect individual users to write readable Python".
Python enforces proper indentation which I think is a great idea since
I'm used to reading horribly indented code by others. I would love to
see this extended to enforce proper whitespacing for statements.

"There should be one-and preferably only one-obvious way to do it." is
a phrase that is usually considered pythonic, and I think that it
should also apply a bit when it comes to coding conventions.

- Björn Kempén

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


Re: Python statements not forcing whitespace is messy?

2007-09-15 Thread James Stroud
Steve Holden wrote:
> I don't know why you have a bug up your ass about it, as the
> Americans say.

I think most Americans say "wild hare up your ass". We do not, in fact, 
say "wild hair up your ass". Many of us can testify that a hair up one's 
ass would be nothing terribly unusual and would go completely unnoticed 
under most circumstances.

Also, some Americans erroneously say "hair's breath", and others think 
they mean "hare's breath" (which might be tiny, but diffuses quickly to 
theoretically infinite volume). In reality, however, they mean "hair's 
breadth"--which is quite small indeed! For instance, a hair's breadth is 
far smaller than a hare's breath (even at the exact moment of respiration).

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


Re: Needless copying in iterations?

2007-09-15 Thread buffi
On Sep 15, 11:58 pm, James Stroud <[EMAIL PROTECTED]> wrote:
> Hello all,
>
> I was staring at a segment of code that looked like this today:
>
> for something in stuff[x:y]:
>   whatever(something)
>
> and was wondering if the compiler really made a copy of the slice from
> stuff as the code seems to suggest, or does it find some way to produce
> an iterator without the need to make a copy (if stuff is a built-in
> sequence type)? Or would it be more efficient to do the more clumsy (in
> my opinion):
>
> for i in xrange(x, y):
>   whatever(stuff[i])
>
> James

itertools.islice does what you want

import itertools
for something in itertools.islice(stuff, x, y):
  whatever(something)

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


Re: problems using pythom tempfile module

2007-09-15 Thread [EMAIL PROTECTED]
On Sep 15, 5:24 pm, buffi <[EMAIL PROTECTED]> wrote:
> On Sep 15, 11:11 pm, "[EMAIL PROTECTED]"
>
>
>
> <[EMAIL PROTECTED]> wrote:
> > Hello everyone,
>
> > I'm trying to test the tempfile module with the following script,
> > which basically creates a temporary file, fills the file with some
> > test data and prints it.
>
> > import tempfile
>
> > t = tempfile.TemporaryFile()
> > t.write("lalalala")
> > t.flush()
> > print t.read()
>
> > Unfortunately, the print statement gives me an empty string. Can
> > somebody tell me what I'm doing wrong ?
>
> > regards Samir
>
> Do a t.seek(0) before you do the read to "rewind" the file and then it
> should work.

Ok, this really worked. Can you elaborate why I have to insert this
statement?

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


Re: Needless copying in iterations?

2007-09-15 Thread James Stroud
buffi wrote:
> On Sep 15, 11:58 pm, James Stroud <[EMAIL PROTECTED]> wrote:
>> Hello all,
>>
>> I was staring at a segment of code that looked like this today:
>>
>> for something in stuff[x:y]:
>>   whatever(something)
>>
>> and was wondering if the compiler really made a copy of the slice from
>> stuff as the code seems to suggest, or does it find some way to produce
>> an iterator without the need to make a copy (if stuff is a built-in
>> sequence type)? Or would it be more efficient to do the more clumsy (in
>> my opinion):
>>
>> for i in xrange(x, y):
>>   whatever(stuff[i])
>>
>> James
> 
> itertools.islice does what you want
> 
> import itertools
> for something in itertools.islice(stuff, x, y):
>   whatever(something)
> 

Thanks buffi!

So I guess the interpreter does no optimization in the latter?

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


Re: Needless copying in iterations?

2007-09-15 Thread buffi
On Sep 16, 12:20 am, James Stroud <[EMAIL PROTECTED]> wrote:
> buffi wrote:
> > On Sep 15, 11:58 pm, James Stroud <[EMAIL PROTECTED]> wrote:
> >> Hello all,
>
> >> I was staring at a segment of code that looked like this today:
>
> >> for something in stuff[x:y]:
> >>   whatever(something)
>
> >> and was wondering if the compiler really made a copy of the slice from
> >> stuff as the code seems to suggest, or does it find some way to produce
> >> an iterator without the need to make a copy (if stuff is a built-in
> >> sequence type)? Or would it be more efficient to do the more clumsy (in
> >> my opinion):
>
> >> for i in xrange(x, y):
> >>   whatever(stuff[i])
>
> >> James
>
> > itertools.islice does what you want
>
> > import itertools
> > for something in itertools.islice(stuff, x, y):
> >   whatever(something)
>
> Thanks buffi!
>
> So I guess the interpreter does no optimization in the latter?
>
> James

No, as far as I know it makes a new list out of the slice when you do
it like
for something in stuff[x:y]

- Björn Kempén

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

Re: Needless copying in iterations?

2007-09-15 Thread Calvin Spealman
This is a case where its up to the type involved. For example,
xrange() slices the way you want but range() does not. Maybe a type
would return for slices a proxy object that got the value by index or
maybe it knows that it makes more sense to give you a copy because
changes during the iteration should not be reflected in the iteration.
It would be really easy to make a generic slicer.

On 9/15/07, James Stroud <[EMAIL PROTECTED]> wrote:
> Hello all,
>
> I was staring at a segment of code that looked like this today:
>
> for something in stuff[x:y]:
>   whatever(something)
>
> and was wondering if the compiler really made a copy of the slice from
> stuff as the code seems to suggest, or does it find some way to produce
> an iterator without the need to make a copy (if stuff is a built-in
> sequence type)? Or would it be more efficient to do the more clumsy (in
> my opinion):
>
> for i in xrange(x, y):
>   whatever(stuff[i])
>
> James
> --
> http://mail.python.org/mailman/listinfo/python-list
>


-- 
Read my blog! I depend on your acceptance of my opinion! I am interesting!
http://ironfroggy-code.blogspot.com/
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: (wxPython) wx.ProgressDialog - how to cancel out of?

2007-09-15 Thread 7stud
On Sep 14, 11:57 pm, Terry Carroll <[EMAIL PROTECTED]> wrote:
> I'm trying to use wx.ProgressBar, and the cancel button is not
> responding.
>
> Here is a simple program that exhibits the problem:
>
> #
> import  wx
> import time
>
> max = 10
> app = wx.PySimpleApp()
> dlg = wx.ProgressDialog("Progress dialog example",
>"variables to be shown here",
>maximum = max,
>style = wx.PD_CAN_ABORT
> | wx.PD_CAN_SKIP
> #| wx.PD_APP_MODAL
> | wx.PD_ELAPSED_TIME
> | wx.PD_ESTIMATED_TIME
> | wx.PD_REMAINING_TIME
> )
>
> keepGoing = True
> skip = False
> count = 0
>
> while keepGoing and count < max:
> count += 1
> wx.MilliSleep(1000)
> #time.sleep(1)
> newtext = "(before) count: %s, keepGoing: %s, skip: %s " % \
>   (count, keepGoing, skip)
> print newtext
> (keepGoing, skip) = dlg.Update(count, newtext)
> newtext = "(after) count: %s, keepGoing: %s, skip: %s " % \
>   (count, keepGoing, skip)
> print newtext
> dlg.Destroy()
> #
>
> The dialog looks right when this runs, but  
>
> What's right: I get a progress bar;  it includes "Skip" and "Cancel"
> buttons; it shows 10 seconds of progress, and updates once per second
> with the variables' values on each iteration.
>
> What's wrong is that I can't get clicking on the "Skip" or "Cancel"
> buttons to have any effect.  Instead, as soon as the dialog displays,
> I get an hourglass, and it doesn't matter what I click on.  Here's
> what the print statements display, consistently, regardless of what I
> try to click or whether I click nothing at all:
>
> I:\python>test1.py
> (before) count: 1, keepGoing: True, skip: False
> (after) count: 1, keepGoing: True, skip: False
> (before) count: 2, keepGoing: True, skip: False
> (after) count: 2, keepGoing: True, skip: True
> (before) count: 3, keepGoing: True, skip: True
> (after) count: 3, keepGoing: True, skip: True
> (before) count: 4, keepGoing: True, skip: True
> (after) count: 4, keepGoing: True, skip: True
> (before) count: 5, keepGoing: True, skip: True
> (after) count: 5, keepGoing: True, skip: True
> (before) count: 6, keepGoing: True, skip: True
> (after) count: 6, keepGoing: True, skip: True
> (before) count: 7, keepGoing: True, skip: True
> (after) count: 7, keepGoing: True, skip: True
> (before) count: 8, keepGoing: True, skip: True
> (after) count: 8, keepGoing: True, skip: True
> (before) count: 9, keepGoing: True, skip: True
> (after) count: 9, keepGoing: True, skip: True
> (before) count: 10, keepGoing: True, skip: True
> (after) count: 10, keepGoing: True, skip: True
>
> Two oddities here:
>
> 1) As I read the docs, the keepGoing variable should be set to True,
> unless I click on "Cancel," in which case it should be set to False
> (which would end the loop).  That doesn't happen.  This is really what
> I'm most concerned here with.
>
> 2) The variable "skip: set to False on the first iteration, and then
> set to True on subsequent iterations?  Note that this happens even if
> no buttons are selected.  This is just a weirdness to me, and not my
> main concern, but I thought I'd mention it in case it's relevant.
>
> You can see some variations in the commented-out code that I tried;
> they did not help.
>
> Relevant software and releases:
>
> OS: Windows XP Home Edition, Version 2002, SP2
> Python: ActivePython 2.5.0.0
> wxPython: 2.8.1.1 (msw-unicode)
>
> Any help appreciated.

Supposedly a progress dialog does not work well on its own because
events get screwed up when there isn't a main loop.  Try this:

import wx

app = wx.PySimpleApp()

win = wx.Frame(None, -1, "Test Progress Dialog")
button = wx.Button(win, -1, "start download")

def on_button_click(evt):
max = 10
dialog = wx.ProgressDialog(
"Loading",
"progress:",
max,
style = wx.PD_CAN_ABORT
|wx.PD_ELAPSED_TIME
|wx.PD_ESTIMATED_TIME
|wx.PD_REMAINING_TIME
)


keep_going = True
skip = False
count = 0
while keep_going and (count < max):
count += 1
wx.MilliSleep(1000)

(keep_going, skip) = dialog.Update(count)
print skip

dialog.Destroy()


button.Bind(wx.EVT_BUTTON, on_button_click)

win.Show()
app.MainLoop()

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


Re: Needless copying in iterations?

2007-09-15 Thread buffi
On Sep 16, 12:25 am, "Calvin Spealman" <[EMAIL PROTECTED]> wrote:
> This is a case where its up to the type involved. For example,
> xrange() slices the way you want but range() does not.

Coul you explain this?
As far as I know you can't slice a xrange

- Björn Kempén

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

Re: how to join array of integers?

2007-09-15 Thread Grant Edwards
On 2007-09-15, Robert Kern <[EMAIL PROTECTED]> wrote:
> Grant Edwards wrote:
>> On 2007-09-15, Erik Jones <[EMAIL PROTECTED]> wrote:
>> 
> print ''.join([str(i) for i in [1,2,3]])
 It's better to use generator comprehension instead of LC:

 ",".join(str(i) for i in [1, 2, 3])
>>> Why is that?  That entire expression must be evaluated to
>>> obtain the result, so what is the advantage of using a
>>> generator comprehension v. a list comprehension?
>> 
>> The generator avoids creating the intermediate list -- it
>> generates the intermediate values on the fly. For short
>> sequences it probably doesn't matter much.  For a very long
>> list it's probably noticable.
>
> Not true. str.join() creates a list from the iterator if it is
> not already a list or a tuple.

So the iterator avoids creating an intermediate list, but the
join method goes ahead and does it anyway?

> In Objects/stringobject.c, look at string_join(); it calls
> PySequence_Fast() on the argument. Looking in
> Objects/abstract.c, we see that PySequence_Fast()
> short-circuits lists and tuples but builds a full list from
> the iterable otherwise.

So what's the point of iterables if code is going to do stuff
like that when it wants to iterate over a sequence?

> map() seems to reliably be the fastest option,

Which is apparently going away in favor of the slower iterator
approach?

> and list comprehensions seem to slightly edge out generator
> comprehensions if you do the timings.

-- 
Grant Edwards   grante Yow!  Clear the
  at   laundromat!! This
   visi.comwhirl-o-matic just had a
   nuclear meltdown!!
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: problems using pythom tempfile module

2007-09-15 Thread Steve Holden
[EMAIL PROTECTED] wrote:
> On Sep 15, 5:24 pm, buffi <[EMAIL PROTECTED]> wrote:
>> On Sep 15, 11:11 pm, "[EMAIL PROTECTED]"
>>
>>
>>
>> <[EMAIL PROTECTED]> wrote:
>>> Hello everyone,
>>> I'm trying to test the tempfile module with the following script,
>>> which basically creates a temporary file, fills the file with some
>>> test data and prints it.
>>> import tempfile
>>> t = tempfile.TemporaryFile()
>>> t.write("lalalala")
>>> t.flush()
>>> print t.read()
>>> Unfortunately, the print statement gives me an empty string. Can
>>> somebody tell me what I'm doing wrong ?
>>> regards Samir
>> Do a t.seek(0) before you do the read to "rewind" the file and then it
>> should work.
> 
> Ok, this really worked. Can you elaborate why I have to insert this
> statement?
> 
Each file has a "current position". As you write a file the current 
position moves to stay just ahead of what's been written. So if you read 
it without resetting the current position (back to the beginning with 
seek(0)) you will get an immediate end of file (i.e. 0 bytes) returned.

regards
  Steve
-- 
Steve Holden+1 571 484 6266   +1 800 494 3119
Holden Web LLC/Ltd   http://www.holdenweb.com
Skype: holdenweb  http://del.icio.us/steve.holden

Sorry, the dog ate my .sigline

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


Re: problems using pythom tempfile module

2007-09-15 Thread buffi
Pretend that you have a number that is always pointing somewhere in
your temporary file.
It starts a 0.
If you then write "lalalala" (8 characters) it will point after these
at position 8, so that you can write more stuff after your previous
text later by calling write.

The read method reads all the data from the current position of the
"pointer" to the end of the file. If you simply call it after writing,
you wont get anything since you are already at the end of the file.
Therefore you "rewind" the pointer back to the start by calling seek
which takes the position in the file to go to...
your_file.seek(0) returns you to the start of the file to read all of
its data

- Björn Kempén

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

Re: (wxPython) wx.ProgressDialog - how to cancel out of?

2007-09-15 Thread 7stud

Terry Carroll wrote:
> I'm trying to use wx.ProgressBar, and the cancel button is not
> responding.
>
> Here is a simple program that exhibits the problem:
>
> #
> import  wx
> import time
>
> max = 10
> app = wx.PySimpleApp()
> dlg = wx.ProgressDialog("Progress dialog example",
>"variables to be shown here",
>maximum = max,
>style = wx.PD_CAN_ABORT
> | wx.PD_CAN_SKIP
> #| wx.PD_APP_MODAL
> | wx.PD_ELAPSED_TIME
> | wx.PD_ESTIMATED_TIME
> | wx.PD_REMAINING_TIME
> )
>
> keepGoing = True
> skip = False
> count = 0
>
> while keepGoing and count < max:
> count += 1
> wx.MilliSleep(1000)
> #time.sleep(1)
> newtext = "(before) count: %s, keepGoing: %s, skip: %s " % \
>   (count, keepGoing, skip)
> print newtext
> (keepGoing, skip) = dlg.Update(count, newtext)
> newtext = "(after) count: %s, keepGoing: %s, skip: %s " % \
>   (count, keepGoing, skip)
> print newtext
> dlg.Destroy()
> #
>
> The dialog looks right when this runs, but
>
> What's right: I get a progress bar;  it includes "Skip" and "Cancel"
> buttons; it shows 10 seconds of progress, and updates once per second
> with the variables' values on each iteration.
>
> What's wrong is that I can't get clicking on the "Skip" or "Cancel"
> buttons to have any effect.  Instead, as soon as the dialog displays,
> I get an hourglass, and it doesn't matter what I click on.  Here's
> what the print statements display, consistently, regardless of what I
> try to click or whether I click nothing at all:
>
> I:\python>test1.py
> (before) count: 1, keepGoing: True, skip: False
> (after) count: 1, keepGoing: True, skip: False
> (before) count: 2, keepGoing: True, skip: False
> (after) count: 2, keepGoing: True, skip: True
> (before) count: 3, keepGoing: True, skip: True
> (after) count: 3, keepGoing: True, skip: True
> (before) count: 4, keepGoing: True, skip: True
> (after) count: 4, keepGoing: True, skip: True
> (before) count: 5, keepGoing: True, skip: True
> (after) count: 5, keepGoing: True, skip: True
> (before) count: 6, keepGoing: True, skip: True
> (after) count: 6, keepGoing: True, skip: True
> (before) count: 7, keepGoing: True, skip: True
> (after) count: 7, keepGoing: True, skip: True
> (before) count: 8, keepGoing: True, skip: True
> (after) count: 8, keepGoing: True, skip: True
> (before) count: 9, keepGoing: True, skip: True
> (after) count: 9, keepGoing: True, skip: True
> (before) count: 10, keepGoing: True, skip: True
> (after) count: 10, keepGoing: True, skip: True
>
> Two oddities here:
>
> 1) As I read the docs, the keepGoing variable should be set to True,
> unless I click on "Cancel," in which case it should be set to False
> (which would end the loop).  That doesn't happen.  This is really what
> I'm most concerned here with.
>
> 2) The variable "skip: set to False on the first iteration, and then
> set to True on subsequent iterations?  Note that this happens even if
> no buttons are selected.  This is just a weirdness to me, and not my
> main concern, but I thought I'd mention it in case it's relevant.
>
> You can see some variations in the commented-out code that I tried;
> they did not help.
>
> Relevant software and releases:
>
> OS: Windows XP Home Edition, Version 2002, SP2
> Python: ActivePython 2.5.0.0
> wxPython: 2.8.1.1 (msw-unicode)
>
> Any help appreciated.

Or, if you want the progress dialog to start when your app starts--
rather than after a user clicks on a button--you can use a short
timer:

import wx

app = wx.PySimpleApp()

win = wx.Frame(None, -1, "Test Progress Dialog")
timer = wx.Timer(win)
#win.Bind(wx.EVT_TIMER, on_timer_expiry, timer)

def on_timer_expiry(evt):
max = 10
dialog = wx.ProgressDialog(
"Loading",
"progress:",
max,
style = wx.PD_CAN_ABORT
|wx.PD_ELAPSED_TIME
|wx.PD_ESTIMATED_TIME
|wx.PD_REMAINING_TIME
)


keep_going = True
skip = False
count = 0
while keep_going and (count < max):
count += 1
wx.MilliSleep(1000)

(keep_going, skip) = dialog.Update(count)
print skip

dialog.Destroy()
timer.Stop()

win.Bind(wx.EVT_TIMER, on_timer_expiry, timer)
timer.Start(1000)

win.Show()
app.MainLoop()

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


Re: (wxPython) wx.ProgressDialog - how to cancel out of?

2007-09-15 Thread 7stud
On Sep 14, 11:57 pm, Terry Carroll <[EMAIL PROTECTED]> wrote:
> I'm trying to use wx.ProgressBar, and the cancel button is not
> responding.
>
> Here is a simple program that exhibits the problem:
>
> #
> import  wx
> import time
>
> max = 10
> app = wx.PySimpleApp()
> dlg = wx.ProgressDialog("Progress dialog example",
>"variables to be shown here",
>maximum = max,
>style = wx.PD_CAN_ABORT
> | wx.PD_CAN_SKIP
> #| wx.PD_APP_MODAL
> | wx.PD_ELAPSED_TIME
> | wx.PD_ESTIMATED_TIME
> | wx.PD_REMAINING_TIME
> )
>
> keepGoing = True
> skip = False
> count = 0
>
> while keepGoing and count < max:
> count += 1
> wx.MilliSleep(1000)
> #time.sleep(1)
> newtext = "(before) count: %s, keepGoing: %s, skip: %s " % \
>   (count, keepGoing, skip)
> print newtext
> (keepGoing, skip) = dlg.Update(count, newtext)
> newtext = "(after) count: %s, keepGoing: %s, skip: %s " % \
>   (count, keepGoing, skip)
> print newtext
> dlg.Destroy()
> #
>
> The dialog looks right when this runs, but  
>
> What's right: I get a progress bar;  it includes "Skip" and "Cancel"
> buttons; it shows 10 seconds of progress, and updates once per second
> with the variables' values on each iteration.
>
> What's wrong is that I can't get clicking on the "Skip" or "Cancel"
> buttons to have any effect.  Instead, as soon as the dialog displays,
> I get an hourglass, and it doesn't matter what I click on.  Here's
> what the print statements display, consistently, regardless of what I
> try to click or whether I click nothing at all:
>
> I:\python>test1.py
> (before) count: 1, keepGoing: True, skip: False
> (after) count: 1, keepGoing: True, skip: False
> (before) count: 2, keepGoing: True, skip: False
> (after) count: 2, keepGoing: True, skip: True
> (before) count: 3, keepGoing: True, skip: True
> (after) count: 3, keepGoing: True, skip: True
> (before) count: 4, keepGoing: True, skip: True
> (after) count: 4, keepGoing: True, skip: True
> (before) count: 5, keepGoing: True, skip: True
> (after) count: 5, keepGoing: True, skip: True
> (before) count: 6, keepGoing: True, skip: True
> (after) count: 6, keepGoing: True, skip: True
> (before) count: 7, keepGoing: True, skip: True
> (after) count: 7, keepGoing: True, skip: True
> (before) count: 8, keepGoing: True, skip: True
> (after) count: 8, keepGoing: True, skip: True
> (before) count: 9, keepGoing: True, skip: True
> (after) count: 9, keepGoing: True, skip: True
> (before) count: 10, keepGoing: True, skip: True
> (after) count: 10, keepGoing: True, skip: True
>
> Two oddities here:
>
> 1) As I read the docs, the keepGoing variable should be set to True,
> unless I click on "Cancel," in which case it should be set to False
> (which would end the loop).  That doesn't happen.  This is really what
> I'm most concerned here with.
>
> 2) The variable "skip: set to False on the first iteration, and then
> set to True on subsequent iterations?  Note that this happens even if
> no buttons are selected.  This is just a weirdness to me, and not my
> main concern, but I thought I'd mention it in case it's relevant.
>
> You can see some variations in the commented-out code that I tried;
> they did not help.
>
> Relevant software and releases:
>
> OS: Windows XP Home Edition, Version 2002, SP2
> Python: ActivePython 2.5.0.0
> wxPython: 2.8.1.1 (msw-unicode)
>
> Any help appreciated.

And here's a version that hides the frame and shows it only after the
progress dialog has finished or been cancelled:

import wx

app = wx.PySimpleApp()

win = wx.Frame(None, -1, "Test Progress Dialog")
timer = wx.Timer(win)
#win.Bind(wx.EVT_TIMER, on_timer_expiry, timer)

def on_timer_expiry(evt):
max = 10
dialog = wx.ProgressDialog(
"Loading",
"progress:",
max,
style = wx.PD_CAN_ABORT
|wx.PD_CAN_SKIP
|wx.PD_ELAPSED_TIME
|wx.PD_ESTIMATED_TIME
|wx.PD_REMAINING_TIME
)


keep_going = True
skip = False
count = 0
while keep_going and (count < max):
count += 1
wx.MilliSleep(1000)

(keep_going, skip) = dialog.Update(count)
print skip

dialog.Destroy()
timer.Stop()

win.Show() #



win.Bind(wx.EVT_TIMER, on_timer_expiry, timer)
timer.Start(1000)

#win.Show()
app.MainLoop()

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


Re: Python statements not forcing whitespace is messy?

2007-09-15 Thread John Machin
On 16/09/2007 8:11 AM, James Stroud wrote:
> Steve Holden wrote:
>> I don't know why you have a bug up your ass about it, as the
>> Americans say.
> 
> I think most Americans say "wild hare up your ass".

The essence of Steve's point appears to be that the OP has ridden into 
town to preach a misguided crusade against the heretofore-unknown 
non-spacing heretics.  It also seems to be alleged that at some stage, 
the OP's donkey has been severely molested by some malevolent fauna; I 
am having difficulty understanding the connection between the two 
themes, and which is cause and which is effect. Enlightenment, please.

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


Re: (wxPython) wx.ProgressDialog - how to cancel out of?

2007-09-15 Thread 7stud
Terry Carroll wrote:
>
> 2) The variable "skip: set to False on the first iteration, and then
> set to True on subsequent iterations?  Note that this happens even if
> no buttons are selected.  This is just a weirdness to me, and not my
> main concern, but I thought I'd mention it in case it's relevant.
>

The docs say:

wx.PD_CAN_SKIP
This flag tells the dialog that it should have a "Skip" button which
the user may press. If this happens, the next call to Update() will
return True in the second component of its return value.

What I'm seeing is: the second item in the tuple returned by Update()
is False if the skip button wasn't clicked and it's True for one
return value when the skip button was clicked, then the value reverts
back to False when Update() returns the next time.

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


string questions

2007-09-15 Thread Shawn Minisall
Hi everyone, I'm a beginning programming student in Python and have a 
few questions regarding strings.

If s1 = "spam"

If s2 = "ni!"

1. Would string.ljust(string.upper(s2),4) * 3 start it at the left 
margin and move it 12 spaces to the right because of the 4 *3?  If so, 
why is it in the parathesis for the upper command and not the ljust?   I 
already know that it would cap it to NI!

2.  To get the output "Spam Ni! Spam Ni! Spam Ni!" I could do something 
like this string.join ([s1, s2]),

But I'm a little lost how to get it repeated three times on one line.  
Would I  just have to put the same command on the next two lines?

3. To change spam to spm, the string.replace seems to be the best 
function to use.  However, when I use
string.replace(s1, "a", " ") in python to replace a with an empty space, 
it doesn't work...I just get spam back when I print s1.   Any ideas?

Thanks.

-Shawn


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


Re: how to join array of integers?

2007-09-15 Thread Steven D'Aprano
On Sat, 15 Sep 2007 15:56:40 +0200, Arnau Sanchez wrote:

> js escribió:
> 
>>> On 9/15/07, Summercool <[EMAIL PROTECTED]> wrote:
> 
>>> in Python... is the method to use  ",".join() ?  but then it must take
>>> a list of strings... not integers...
>>>
>>> any fast method?
> 
>  > print ''.join([str(i) for i in [1,2,3]])
> 
> It's better to use generator comprehension instead of LC:
> 
> ",".join(str(i) for i in [1, 2, 3])


Really? Why do you say that a generator expression is "better" than a 
list comprehension?


>>> import timeit
>>> timeit.Timer("', '.join([str(i) for i in [1,2,3]])", "").repeat()
[5.0969390869140625, 4.5353701114654541, 4.5807528495788574]
>>> timeit.Timer("', '.join(str(i) for i in [1,2,3])", "").repeat()
[11.651727914810181, 10.635221004486084, 10.522483110427856]

The generator expression takes about twice as long to run, and in my 
opinion it is no more readable. So what's the advantage?

 
> Or, if you happen to like the itertools modules:
> 
> from itertools import imap
> ",".join(imap(str, [1, 2, 3]))

>>> timeit.Timer("', '.join(imap(str, [1,2,3]))", 
... "from itertools import imap").repeat()
[9.3077328205108643, 8.655829906463623, 8.5271010398864746]

Faster than a generator expression, but still pretty slow.



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

Re: string questions

2007-09-15 Thread Marc 'BlackJack' Rintsch
On Sat, 15 Sep 2007 19:52:47 -0400, Shawn Minisall wrote:

> Hi everyone, I'm a beginning programming student in Python and have a 
> few questions regarding strings.
> 
> If s1 = "spam"
> 
> If s2 = "ni!"
> 
> 1. Would string.ljust(string.upper(s2),4) * 3 start it at the left 
> margin and move it 12 spaces to the right because of the 4 *3?  If so, 
> why is it in the parathesis for the upper command and not the ljust?   I 
> already know that it would cap it to NI!

Fire up the interpreter and just try it.  And then the different parts to
know whats going on in detail.

But please don't use the functions in `string` that are also available as
methods on strings.  Those functions are deprecated.

> 2.  To get the output "Spam Ni! Spam Ni! Spam Ni!" I could do something 
> like this string.join ([s1, s2]),
> 
> But I'm a little lost how to get it repeated three times on one line.  
> Would I  just have to put the same command on the next two lines?

Try out the code from 1. and you should get an idea ho to repeat three
times.

> 3. To change spam to spm, the string.replace seems to be the best 
> function to use.  However, when I use
> string.replace(s1, "a", " ") in python to replace a with an empty space, 
> it doesn't work...I just get spam back when I print s1.   Any ideas?

Yes, read the documentation to find out that `replace()` does not alter the
string -- strings in Python are immutable -- but returns a new, changed
string.

Ciao,
Marc 'BlackJack' Rintsch
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Needless copying in iterations?

2007-09-15 Thread Marc 'BlackJack' Rintsch
On Sat, 15 Sep 2007 14:58:15 -0700, James Stroud wrote:

> I was staring at a segment of code that looked like this today:
> 
> for something in stuff[x:y]:
>   whatever(something)
> 
> and was wondering if the compiler really made a copy of the slice from 
> stuff as the code seems to suggest, or does it find some way to produce 
> an iterator without the need to make a copy (if stuff is a built-in 
> sequence type)?

The compiler can't "optimize" this as it would change the semantics. 
There's no way for the compiler to tell if this copy really is "needless".
`whatever()` may change `stuff[i]` where `i` is in `x:y` and this may lead
to different results wether it iterates over a copy or the original.

Ciao,
Marc 'BlackJack' Rintsch
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Can You Program?

2007-09-15 Thread Steven D'Aprano
On Sat, 15 Sep 2007 14:15:20 +, brus stoc at gmail dot com wrote:

[snip spam]
 
> Hey, thanks for spamming our group.

You know, there are probably millions of people who never received the 
original spam because their Usenet provider does a good job of filtering 
out crud, and they wouldn't even know it existed, except that YOU decided 
you had to be a big man by engaging the spammer in conversation.

Did you really think even for a millisecond that the spammer actually 
hangs around long enough to read replies to his spam?

All I can say is, thank goodness for automated Baysian filters, because 
now your email address is associated with spam in thousands of filters 
across the world, reducing the chances of us seeing posts from you. I 
think that's a good thing.



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


  1   2   >