IO Gurus: what are the differences between these two methods?

2009-12-07 Thread dpapathanasiou
I have two methods for writing binaries files: the first works with data received by a server corresponding to a file upload, and the second works with data sent as email attachments. The odd thing is, they're not interchangeable: if I use the first one to saved data parsed from an email

Re: Parsing email attachments: get_payload() produces unsaveable data

2009-10-14 Thread dpapathanasiou
On Oct 4, 10:27 am, dpapathanasiou denis.papathanas...@gmail.com wrote: I'm using python to access an email account via POP, then for each incoming message, save any attachments. This is the function which scans the message for attachments: def save_attachments (local_folder, msg_text

Parsing email attachments: get_payload() produces unsaveable data

2009-10-04 Thread dpapathanasiou
I'm using python to access an email account via POP, then for each incoming message, save any attachments. This is the function which scans the message for attachments: def save_attachments (local_folder, msg_text): Scan the email message text and save the attachments (if any) in the

Re: Parsing email attachments: get_payload() produces unsaveable data

2009-10-04 Thread dpapathanasiou
And where might we be able to see that stack trace? This is it: Exception: ('AttributeError', 'no args', [' File /opt/server/smtp/ smtps.py, line 213, in handle\ne mail_replier.post_reply(recipient_mbox, \'\'.join(data))\n', ' File / opt/server/smtp/email_replier.py, l ine 108, in

Re: Parsing email attachments: get_payload() produces unsaveable data

2009-10-04 Thread dpapathanasiou
Which is *really* difficult (for me) to read.  Any chance of providing a normal traceback? File /opt/server/smtp/smtps.py, line 213, in handle email_replier.post_reply(recipient_mbox, ''.join(data)) File /opt/server/smtp/email_replier.py, line 108, in post_reply

Re: mod_python and xml.dom.minidom

2009-05-15 Thread dpapathanasiou
Were you getting this issue with xml.dom showing on first request all the time, or only occasionally occurring? If the latter, were you running things in a multithreaded configuration and was the server being loaded with lots of concurrent requests? It was the former. For your particular

Re: mod_python and xml.dom.minidom

2009-05-11 Thread dpapathanasiou
His problem is therefore likely to be something completely different. You are correct. As per the earlier advice, I switched from mod_python to mod_wsgi but I still see the same error: [Mon May 11 10:30:21 2009] [notice] Apache/2.2.11 (Unix) mod_wsgi/2.4 Python/2.5.2 configured -- resuming

Re: mod_python and xml.dom.minidom

2009-05-11 Thread dpapathanasiou
For the record, and in case anyone else runs into this particular problem, here's how resolved it. My original xml_utils.py was written this way: from xml.dom import minidom def parse_item_attribute (item, attribute_name): item_doc = minidom.parseString(item) ... That version worked

mod_python and xml.dom.minidom

2009-05-08 Thread dpapathanasiou
I wrote a python script called xml_utils.py which parses xml using minidom. It works when it's run on its own, but when I try to import it and run it inside a mod_python handler, I get this error: File ../common/xml_utils.py, line 80, in parse_item_attribute File

Getting around immutable default arguments for recursion

2009-01-14 Thread dpapathanasiou
I wrote this function to retrieve a list of items from a dictionary. The first time it was called, it worked properly. But every subsequent call returned the results of the prior call, plus the results of the current call. I was confused until I read in the docs that default arguments are

Re: Getting around immutable default arguments for recursion

2009-01-14 Thread dpapathanasiou
The usual solution is: def get_prior_versions (item_id, priors=None): if priors is None: priors = [] Thanks! -- http://mail.python.org/mailman/listinfo/python-list

Re: Getting around immutable default arguments for recursion

2009-01-14 Thread dpapathanasiou
How about: def get_prior_versions (item_id, priors=None): Return a list of all prior item ids starting with this one global history_db # key = item id, value = prior item id prior_id = history_db[item_id] if not prior_id: return priors else: if priors:

Re: Getting around immutable default arguments for recursion

2009-01-14 Thread dpapathanasiou
You'll continue to be confused if you use that term. Python already has a specific use of the term “immutable”, and it doesn't apply here. I was just following the terminology used in A Byte of Python (which, that particular point aside, is a very good tutorial). Better to say: default

Re: Getting around immutable default arguments for recursion

2009-01-14 Thread dpapathanasiou
How about this then: def get_prior_versions (item_id, priors=None): Return a list of all prior item ids starting with this one global history_db # key = item id, value = prior item id prior_id = history_db[item_id] if not prior_id: if priors: return priors or []

Python equivalent of Common Lisp Macros?

2008-11-26 Thread dpapathanasiou
I'm using the feedparser library to extract data from rss feed items. After I wrote this function, which returns a list of item titles, I noticed that most item attributes would be retrieved the same way, i.e., the function would look exactly the same, except for the single data.append line

Re: Python equivalent of Common Lisp Macros?

2008-11-26 Thread dpapathanasiou
On Nov 26, 2:30 pm, Chris Rebert [EMAIL PROTECTED] wrote: On Wed, Nov 26, 2008 at 11:13 AM, dpapathanasiou [EMAIL PROTECTED] wrote: I'm using the feedparser library to extract data from rss feed items. After I wrote this function, which returns a list of item titles, I noticed that most

Avoiding local variable declarations?

2008-11-13 Thread dpapathanasiou
I have some old Common Lisp functions I'd like to rewrite in Python (I'm still new to Python), and one thing I miss is not having to declare local variables. For example, I have this Lisp function: (defun random-char () Generate a random char from one of [0-9][a-z][A-Z] (if ( 50 (random

Re: Avoiding local variable declarations?

2008-11-13 Thread dpapathanasiou
return chr( random.randrange(0, 26) + (97 if random.randrange(0, 100) 50 else 65) or return chr( random.randrange(0, 26) + [26,97][random.randrange(0, 100) 50] Ah, thanks, these are the syntax examples I was looking for. but what's wrong with you original code? I come from a

Re: Avoiding local variable declarations?

2008-11-13 Thread dpapathanasiou
Any time you port between languages, it's rarely a good idea to just convert code verbatim. For example: import random, string def random_char(): return random.choice(string.ascii_letters + string.digits) Good point, and thanks for the idiomatic Python example (I like the conciseness);

Using the result of type() in a boolean statement?

2008-11-12 Thread dpapathanasiou
If I define a dictionary where one or more of the values is also a dictionary, e.g.: my_dict={a:string, b:string, c:{x:0,y:1}, d:string} How can I use the output of type() so I can do one thing if the value is a string, and another if the value is a dictionary? i.e., I'd like to define a loop