|
William Chan
ycchan at gmail.com
Thu Mar 24 01:29:45 EST 2005
I am sure that the problem is not output conversion. In fact, what I'm
trying to do is:
import os
def index(req, **kwargs):
...
for name in os.listdir('/tmp'):
if name[0] == '.':
...
...
However, I get "IndexError: string index out of range". So They are
really empty strings.
On Thu, 24 Mar 2005 01:15:49 -0500, Graham Dumpleton
<grahamd at dscpl.com.au> wrote:
> William Chan wrote ..
> > I'm using mod_python.publisher. My codes are:
> >
> > import os
> > def index():
> > return str(os.listdir('/tmp'))
> >
> > and the output is:
> >
> > ['', '', '', '', '', '', '', '', '', '']
>
> The explicit conversion of the result of os.listdir() to a string
> using str() is not actually required as mod_python.publisher
> will automatically convert any result into a string anyway.
> This fact shouldn't make any difference though.
>
> All I can suggest is changing your handler to:
>
> import os
>
> def index(req):
> req.content_type = "text/plain"
> req.send_http_header()
> return os.listdir('/tmp')
>
> By setting the content type to "text/plain" you avoid publisher
> making a guess as to whether the content type may be HTML
> or not. It is possible, although unlikely that some filename in
> /tmp contains the magic characters it looks for. I don't though
> see this happening based on what you say is being displayed.
>
> Other thing to try would be:
>
> import os
>
> def index(req):
> req.content_type = "text/plain"
> req.send_http_header()
> return repr(os.listdir('/tmp'))
>
> This takes the task of converting the result to a string away from
> publisher and displays it in a form which will hopefully encode
> any strange characters so they are visible and will not cause any
> problem.
>
> Graham
>
>
|