2013-07-22 38 views
5

我正在为puush服务制作图像采集卡;但是,每当我生成一个随机URL并尝试将其验证为.PNG图像时,就会生成一个错误。我今天早些时候刚刚接受了Python语言,所以你可以说我对此非常陌生!Python,试图通过URL获取文件扩展名

时产生的错误:

#!/usr/bin/env python 
import sys 
import urllib 
from mimetypes import guess_type, guess_extension 
from random import choice 

randoms = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 
      'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',' J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 
      '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; 

downloads = 1; 

#the number of files we want to download 
target = int(sys.argv[1]); 

while downloads <= target: 
    string = choice(randoms)+choice(randoms)+choice(randoms)+choice(randoms)+choice(randoms) 
    url = 'http://puu.sh/'+string 

    print(str(downloads)+': '+string) 

    #download 
    extension = guess_extension(guess_type(url)) 
    print(extension) 

    #urllib.request('http://puu.sh/'+string, string+'.png') 
    downloads += 1 

什么这个错误是试图告诉我的任何想法:

Traceback (most recent call last): 
    File "run.py", line 19, in <module> 
    extension = guess_extension(guess_type(url)) 
    File "C:\Python33\lib\mimetypes.py", line 320, in guess_extension 
    return _db.guess_extension(type, strict) 
    File "C:\Python33\lib\mimetypes.py", line 189, in guess_extension 
    extensions = self.guess_all_extensions(type, strict) 
    File "C:\Python33\lib\mimetypes.py", line 168, in guess_all_extensions 
    type = type.lower() 
AttributeError: 'tuple' object has no attribute 'lower' 

就是跑的代码?谢谢。

回答

6

guess_type()返回元组(type,encoding),而guess_extension()接受单个参数type

线

extension = guess_extension(guess_type(url)) 

呼叫guess_type,然后通过它的返回值(元组),以guess_extension。您应该只通过元组(type)的第一个元素

extension = guess_extension(guess_type(url)[0]) 
1

我可以建议在未来,遇到问题时,这样你print任何变量给你的悲伤。

所以在你的情况下,现在,如果你没有print (type)蟒蛇就会给你的元组,你就已经能够看到,如果要寻找的网址,您在那里,然后做type = type[0].lower()