Fab86 wrote:
On Mar 4, 2:49 pm, MRAB <goo...@mrabarnett.plus.com> wrote:
Fab86 wrote:
On Mar 4, 1:40 am, "Gabriel Genellina" <gagsl-...@yahoo.com.ar> wrote:
En Tue, 03 Mar 2009 23:11:30 -0200, Fab86 <fabien.h...@gmail.com> escribió:
On Mar 4, 12:00 am, MRAB <goo...@mrabarnett.plus.com> wrote:
Fab86 wrote:
On Mar 3, 8:59 pm, "Gabriel Genellina" <gagsl-...@yahoo.com.ar> wrote:
How to "spell" exactly the exception name should appear in the documentation; might be yahoo.SearchError, or
yahoo.search.SearchError, or
yahoo.errors.SearchError, or similar.
I have been trying except SearchError: however I get the error:
Traceback (most recent call last):
  File "C:\Downloads\MoS\yws-2.12\Python\pYsearch-3.1\timeDelay.py",
line 19, in <module>
    except SearchError:
NameError: name 'SearchError' is not defined
I have searched all documents for terms along the lines of searcherror
but am finding nothing..
It's defined in the module you imported to get the search functionality.
I imported:
from yahoo.search.web import WebSearch
However there is nothing re SearchError in that doc or in the .py.
I can only find a reference to SearchError in the __init__ file as a
class called SearchError
The __init__.py indicates a package <http://docs.python.org/tutorial/modules.html#packages> You didn't tell the package name (the name of the directory containing __init__.py) so this is somewhat generic. If the package name is foo, use:
 from foo import SearchError
If foo is a subpackage under bar, use:
 from bar.foo import SearchError
It *might* be:
 from yahoo.search.web import WebSearch
or perhaps:
 from yahoo.search import WebSearch
You can enter those lines in the interactive interpreter to discover the right form. (This really ought to have been documented)
--
Gabriel Genellina
Ok, I managed to import the correct error class (was in a non expected
place)
Just as I thought I was finished, I encountered a final problem. I am
running a while loop which is constantly adding search results to a
file, like this (print >> f, res.total_results_available). I have put
an exception in that if it times out, it simply tries again until its
finished. The problem is that the loop re-write all new results
continuing on from the previous searches. I would like to somehow
delete all in that file and start again.
I thought this could simply be achieved by putting f.close() in the
exception and then it re-writes it however I am getting this error:
Traceback (most recent call last):
  File "/home/csunix/scs5fjnh/FYProj/Python/pYsearch-3.1/test9.py",
line 17, in <module>
    print >> f, res.total_results_available
ValueError: I/O operation on closed file
Is there another way rather than closing the file? Is it possible to
delete all within the file?
You could do:

     f.seek(0)
     f.truncate()

I hope you don't just discard all the results you've got so far and then
start from the beginning again.

MRAB, yes I do, thats the only way I can I get it to work. I wouldnt
know how to make the program read  the expection and then carry of
from the last search term.

Is that even possible?

Your code looks something like this:

srch = WebSearch(app_id=YahooKey)
for lang in langs:
    srch.query = "avoir site:.%s" % lang
    res = srch.parse_results()
    print >> f, res.total_results_available

The exception is raise by, I think, srch.parse_results(), so you could
do something like this:

srch = WebSearch(app_id=YahooKey)
for lang in langs:
    srch.query = "avoir site:.%s" % lang
    # Use a loop in case we need to try again.
    while True:
       try:
           res = srch.parse_results()
       except SearchError:
           # Failed. Wait a while before trying again.
           time.sleep(SLEEP_IN_SECONDS)
       else:
           # No exception, so we have the results.
           break
    print >> f, res.total_results_available

I'm assuming that you can re-use the WebSearch instance for repeated queries even if it raised the SearchError exception.

If not, just put another srch = WebSearch(app_id=YahooKey) line after
the sleep to create a new WebSearch instance.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to