I am writing a program that uses urllib2 to download CSV data from an http site. The program works fine when run within Python, however I am also trying to use argparse to be able to enter the url from the command line.
I get the following error when I run it:
File "urlcsv.py", line 51, in downloadData
return urllib2.urlopen(url)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 396, in open
protocol = req.get_type()
AttributeError: 'Namespace' object has no attribute 'get_type'
I guess this is part of the urllib2 library because it is not code that I have written. Has anybody else encountered similar problems with either the argparse or urllib2 modules?
The relevant part of the code is as follows:
parser = argparse.ArgumentParser()
parser.add_argument("url")
def main():
"""Runs when the program is opened"""
args = parser.parse_args()
if args is False:
SystemExit
try:
csvData = downloadData(args)
except urllib2.URLError:
print 'Please try a different URL'
raise
else:
LOG_FILENAME = 'errors.log'
logging.basicConfig(filename=LOG_FILENAME,
level=logging.DEBUG,
)
logging.getLogger('assignment2')
personData = processData(csvData)
ID = int(raw_input("Enter a user ID: "))
if ID <= 0:
raise Exception('Program exited, value <= 0')
else:
displayPerson(ID)
main()
def downloadData(url):
return urllib2.urlopen(url)
urllib2module, from the paths being given.reqset to?protocol = req.get_type()is part of the urllib2 module in the Python standard library; it is not code that I have written, it is code that is called byurllib2.urlopen(url)protocol=req.get_type(), which means you still need to "post the code," so to speak. I don't know where you're expecting req to exist, because there's not a member methodurllib2.req.