2015-02-10 44 views
8

我在寫一個程序,它使用urllib2從http站點下載CSV數據。該程序在Python中運行時工作正常,但我也試圖使用argparse能夠從命令行輸入url。AttributeError:'命名空間'對象沒有任何屬性

我收到以下錯誤,當我運行它:

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' 

我想這是的urllib2庫的一部分,因爲它不是我寫的代碼。 有沒有其他人遇到與argparseurllib2模塊類似的問題?

代碼的相關部分如下:

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) 
+0

堆棧跟蹤當然表明'urllib2'模塊中的一個問題,來自給出的路徑。 – nbro 2015-02-10 02:06:41

+0

向我們展示您所寫的代碼以及您所提供的輸入。 – 2015-02-10 02:24:15

+0

您發佈的代碼不包含包含錯誤的行。你有什麼要求? – 2015-02-11 22:08:04

回答

8

你解析命令行參數爲args,這是一個Namespace設置爲解析參數屬性。但是您將整個名稱空間傳遞給downloadData,而不僅僅是url。這個命名空間然後被傳遞給urlopen,它不知道該如何處理它。相反,請致電downloadData(args.url)

相關問題