无法使用动态输入python下载图像
Posted
技术标签:
【中文标题】无法使用动态输入python下载图像【英文标题】:Cannot download images with dynamic input python 【发布时间】:2016-05-03 15:51:01 【问题描述】:我正在尝试使用 Python 下载图像,并且在 Downloading a picture via urllib and python 中找到了一些很好的答案,但是当我尝试使用 easygui 输入网址时,图像只是在我的浏览器中打开,而不是下载图像
这是我的代码:
import easygui as eg
import os
import urllib
url = eg.enterbox('Enter url: ', 'URL Choice')
name = eg.enterbox('Enter name: ', 'Name')
def DownloadImage(URL, name):
try:
image = urllib.urlopen(URL)
if image.headers.maintype == 'image':
buf = image.read()
path = os.getcwd() + 'C:\Users\USER\ImageGrabber\Pics'
file_path = '%s%s' % (path,name+'.jpg')
downloaded_image = file(file_path, 'wb')
downloaded_image.write(buf)
image.close()
else:
return False
except:
print 'Cannot access file'
return False
return True
DownloadImage(url,name)
我用过type函数,box的结果是字符串,所以不知道为什么不行
编辑:忘记包含变量
【问题讨论】:
我希望您将图像 type 提供给您的文件名。如果您的计算机无法判断二进制数据是 PNG 还是 JPEG 格式,那么简单地下载二进制数据也无济于事。 我无法重现我尝试下载此图像https://www.gravatar.com/avatar/775d6701040d31eb0a22479dec666b27?s=32&d=identicon&r=PG
的错误,它似乎工作得很好
@AkshatMahajan 是的,我有,我只是忘了把它放在我的帖子中。我应该提到的另一件事是代码每次都会跳到except语句。
@RafaelAlmeida 我假设您更改了path = os.getcwd() + 'C:\Users\USER\ImageGrabber\Pics'
行,因为据我所知,没有办法在任何计算机上工作。
哇,我刚刚注意到所有except
,@IanBaker 我可以建议删除它或在其中添加traceback.print_exc()
,这样您至少可以看到它给您带来的错误吗?
【参考方案1】:
您的目标路径错误os.getcwd()
为您提供当前工作目录,而您正在附加一个绝对目录。
假设您的脚本在C:\myscript.py
中,os.getcwd()
将返回C:\
,并且您将附加到该C:\Users\USER\ImageGrabber\Pics
,结果将是C:\C:\Users\USER\ImageGrabber\Pics
,这是一个无效路径,因此会出现异常。
path='C:\Users\USER\ImageGrabber\Pics\'
# The last '\' is important
应该可以的
编辑
我无法测试,因为我正在运行 linux,但目录可能需要像这样
path='C:/Users/USER/ImageGrabber/Pics/'
【讨论】:
我在此之前看到了@TadhgMcDonald-Jensen 的评论,但这是我的确切问题,谢谢以上是关于无法使用动态输入python下载图像的主要内容,如果未能解决你的问题,请参考以下文章