|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- import easygui as g
- import urllib.request
- def main():
- msg='请填写喵的尺寸'
- title='下载一只喵'
- fileNames=['宽:','长:']
- fileValues=[]
- size=width,height=400,600
- fileValues=g.multenterbox(msg,title,fileNames,size) #问题1111111
- while True:
- if fileValues==None:
- break
- errmsg=''
- try:
- width=int(fileValues[0].strip())
- except:
- errmsg+='宽度必须为整数。'
- try:
- height=int(fileValues[1].strip())
- except:
- errmsg+='长度必须为整数'
- if errmsg=='':
- break
- fileValues=g.multenterbox(errmsg,title,fileNames,fileValues) #问题222222
- url ='http://placekitten.com/g/%d/%d' %(width,height)
- respone=urllib.request.urlopen(url)
- cat_img=respone.read()
- filepath=g.diropenbox('请选择存放喵的文件夹') # 问题33333
- if filepath:
- filename='%s/cat_%d_%d.jpg' % (filepath,width,height)
- else:
- filename='cat_%d_%d.jpg' % (width,height)
- with open (filename,'wb') as f:
- f.write(cat_img)
- if __name__=='__main__':
- main()
复制代码
这个是小甲鱼老师在54讲课后习题中的答案,照着打一遍又理解了好多遍,然后就是
(1)问题11111那里,fileValues是弄成了列表,如果要访问fileValues的数据的话用fileValues[0]能访问到吗,我自己试了一下发现不行。
(2)问题2222那里,fileValues=g.multenterbox(errmsg,title,fileNames,fileValues)这行代码里面,g.multenterbox里面最后一个参数fileValues是什么意思,小甲鱼老师的easygui学习文档里面似乎也没有提及。
(3)问题33333,不知道下载的数据是怎么转化的,就是cat_img实例对象里面就是url路径,怎么会用f.write弄成了图片的形式。在if语句里面,%S这个代码不知道是干嘛用的,好像弄出来的文件命名还是一样的是cat_width_height.
可能问题一次性有点多,基础不好只能多问好找出自己的缺陷然后努力去填补了。 再次感谢大佬们以往的细心的无私的回答!!
本帖最后由 和vvv 于 2017-7-23 13:51 编辑
(1)可以访问fileValues里面的值(前提是必须要输入宽和高,可以采用默认的)。里面存储的是宽和长。
- msg='请填写喵的尺寸'
- title='下载一只喵'
- fileNames=['宽:','长:']
- fileValues=[]
- size=width,height=400,600
- fileValues=g.multenterbox(msg,title,fileNames,size) #问题1111111
- print(fileValues)
- print(fileValues[0])
复制代码
结果:
(2)fileValues=g.multenterbox(errmsg,title,fileNames,fileValues)这行代码里面,g.multenterbox里面最后一个参数fileValues就是输入的值。这里采用的是开头声明的默认值(400,600)。小甲鱼的文档里面是有说明的。
(3)cat_img=respone.read()是读取抓取的图片数据。将其保存到本地,使用write方法以二进制(wb)的形式写入。%s就是格式化字符串。可以看看小甲鱼的: http://bbs.fishc.com/thread-40789-1-1.html
至于所保存的文件名问题,因为是Windows系统的缘故:
而其他操作系统没试过。因此 - if filepath:
- filename='%s/cat_%d_%d.jpg' % (filepath,width,height)
复制代码执行之后filename的值为F:\cat_400_600.jpg。在Windows下保存会直接成为cat_400_600.jpg。所以,文件名为什么没有带路径。
希望对你有所帮助。
|
|