changes by Barry, e.g. font lock & email addresses
[python/dscho.git] / Demo / tkinter / www / www3.py
blobeb8b07f41612e6126146ff392d9aa2456d597467
1 #! /usr/local/bin/python
3 # www3.py -- print the contents of a URL on stdout
4 # - error checking
5 # - Error 302 handling
7 import sys
8 import urllib
9 import types
11 def main():
12 if len(sys.argv) != 2 or sys.argv[1][:1] == '-':
13 print "Usage:", sys.argv[0], "url"
14 sys.exit(2)
15 url = sys.argv[1]
16 fp = my_urlopen(url)
17 while 1:
18 line = fp.readline()
19 if not line: break
20 sys.stdout.write(line)
22 def my_urlopen(url):
23 try:
24 fp = urllib.urlopen(url)
25 return fp
26 except IOError, msg:
27 if type(msg) == types.TupleType and len(msg) == 4:
28 m = msg[3]
29 if msg[1] == 302:
30 if m.has_key('location'):
31 url = m['location']
32 print 'Location:', url
33 return my_urlopen(url)
34 elif m.has_key('uri'):
35 url = m['uri']
36 print 'URI:', url
37 return my_urlopen(url)
38 print '(Error 302 w/o Location/URI header???)'
39 print msg[:3]
40 for line in m.headers:
41 sys.stdout.write(line)
42 else:
43 print msg
44 sys.exit(1)
46 main()