我正在使用以下代码行:
urllib.urlretrieve(images, thisistest)
在图像中,我有我要下载的图像的URL,并且thisistest包含该位置。
如果我手动输入存储在变量中的数据但在不存在的情况下不能正常工作,就行了。
但没有变量的行将是:
import urllib
urllib.urlretrieve("https://www.google.co.uk/images/srpr/logo11w.png", "C:\temp")
任何人都知道如何使用变量进行操作?
错误:
Traceback (most recent call last):
File "C:\Python\main.py", line 68, in <module>
main()
File "C:\Python\main.py", line 65, in main
wp_dc.main(url)
File "C:\Python\wp_dc.py", line 69, in main
download_images(url, page)
File "C:\Python\wp_dc.py", line 39, in download_images
urllib.urlretrieve(i, thisistest)
File "C:\Python27\lib\urllib.py", line 94, in urlretrieve
return _urlopener.retrieve(url, filename, reporthook, data)
File "C:\Python27\lib\urllib.py", line 228, in retrieve
url = unwrap(toBytes(url))
File "C:\Python27\lib\urllib.py", line 1057, in unwrap
url = url.strip()
AttributeError: 'list' object has no attribute 'strip'
代码
#Finds all images in page
images = re.findall(r'src=".*http\://([^"]+)"', page)
location = os.path.abspath("C:/temp/coursework/")
#Get the filename
#For each in images
for i in images:
#Set filename equal to the basename of i
name = os.path.basename(i)
#Concantenate the save location and filename
thisistest = os.path.join(location, name)
#Test the concantenation
print 'Concantenation test', thisistest
urllib.urlretrieve(i, thisistest)
答案 0 :(得分:1)
你的追溯表明你没有做你说的那样。这是该跟踪的相关代码:
urllib.urlretrieve("images", "thisistest")
您传递的是字符串文字,而不是变量。你应该做你最初说的话:
urllib.urlretrieve(images, thisistest)
修改强>
好的,现在这个问题是关于完全不同的事情。问题是images
是列表,而不是字符串,并且您无法将列表传递给urlretrieve。我怀疑你认为你正在做一些事情来解决这个问题 - 但你不是,你只是定义了一个本地name
变量,然后立即被覆盖并且从未再次被引用过。
您可能想要做的是将内的大部分代码移到循环中:
location = os.path.abspath("C:/temp/coursework/")
for i in images:
name = os.path.basename(i)
thisistest = os.path.join(location, name)
urllib.urlretrieve(i, thisistest)
另请注意,这些正是您的导师希望您自己解决的各种问题,因为他们正在培养您学习编程所需的逻辑思维。