Timothy Smith wrote:
> ok what i am seeing is impossible.
> i DELETED the file from my webserver, uploaded the new one. when my app
> logs in it checks the file, if it's changed it downloads it. the
> impossible part, is that on my pc is downloading the OLD file i've
> deleted! if i download it via IE, i get the new file. SO, my only
> conculsion is that urllib is caching it some where. BUT i'm already
> calling urlcleanup(), so what else can i do?
Here are some ideas to use in your hunt.
- If you are getting a cached local file then the returned object
will have a "name" attribute.
result = urllib.retrieve(".....")
print result.fp.name
As far as I can tell, this will only occur if you use
a tempcache or a file URL.
- You can force some debugging of the open calls, to see if
your program is dealing with a local file.
>>> old_open = open
>>> def my_open(*args):
... print "opening", args
... return old_open(*args)
...
>>> open("/etc/passwd")
<open file '/etc/passwd', mode 'r' at 0x60da0>
>>> import __builtin__
>>> __builtin__.open = my_open
>>> open("/etc/passwd")
opening ('/etc/passwd',)
<open file '/etc/passwd', mode 'r' at 0x60c20>
>>>
You'll may also need to change os.fdopen because that's used
by retrieve if it needs a tempfile.
If you want to see where the open is being called from,
use one of the functions in the traceback module to print
the stack trace.
- for surety's sake, also do
import webbrowser
webbrowser.open(url)
just before you do
urllib.retrieve(url, filename)
This will double check that your program is using the URL you
expect it to use.
- beyond that, check that you've got network activity,
You could check the router lights, or use a web sniffer like
ethereal, or set up a debugging proxy
- check the headers. If your ISP is using a cache then
it might insert a header into what it returns. But if
it was caching then your IE view should have seen the cached
version as well.
Andrew
[EMAIL PROTECTED]
--
http://mail.python.org/mailman/listinfo/python-list