Python FTP抓取和保存图像问题

Python FTP抓取和保存图像问题,python,image,ftp,Python,Image,Ftp,编辑:我让它工作了,它不会下载任何东西… 下面是我现在简化的代码: notions_ftp = ftplib.FTP(ftp_host, ftp_user, ftp_passwd) folder = "Leisure Arts - Images" notions_ftp.cwd(folder) image = open("015693PR-com.jpg","wb") notions_ftp.retrlines("RETR 015693PR-com.jpg", image.write) send

编辑:我让它工作了,它不会下载任何东西…

下面是我现在简化的代码:

notions_ftp = ftplib.FTP(ftp_host, ftp_user, ftp_passwd)
folder = "Leisure Arts - Images"
notions_ftp.cwd(folder)
image = open("015693PR-com.jpg","wb")
notions_ftp.retrlines("RETR 015693PR-com.jpg", image.write)
send_image = open("015693PR-com.jpg", 'r')
这是我的输出:

'250 "/Leisure Arts - Images": is current directory.'
'226 Transfer complete. 0 bytes in 0.00 sec. (0.000 Kb/s)'
原创帖子: 好吧,我整天都在搞这个。我对Python FTP相当陌生。我在这里搜索了一下,找到了这个:

images = notions_ftp.nlst()
    for image_name in image_names:
        if found_url == False:
            try:
                for image in images:
                    ftp_image_name = "./%s" % image_name
                    if ftp_image_name == image:
                        found_url = True
                        image_name_we_want = image_name
            except:
                pass

    # We failed to find an image for this product, it will have to be done manually
    if found_url == False:
        log.info("Image ain't there baby -- SKU: %s" % sku)
        return False
    # Hey we found something! Open the image....
    notions_ftp.retrlines("RETR %s" % image_name_we_want, open(image_name_we_want, "rb"))
    1/0
所以我把误差缩小到除以零之前的那一行。以下是错误:

Traceback (most recent call last):
  File "<console>", line 6, in <module>
  File "<console>", line 39, in insert_image
IOError: [Errno 2] No such file or directory: '411483CC-IT,IM.jpg'

您正在读取文件,而不是写入文件

因此,不要使用
open(image\u name\u我们想要“rb”)
而使用
open(image\u name\u我们想要“wb”)

[编辑] 如果您只是从ftp服务器获取,也可以尝试以下方法:

import urllib2
fh = urllib2.urlopen('ftp://server/path/file.png')
file('file.png', 'wb').write(fh.read())
另外,对于一个完全有效的示例,请阅读以下内容:


在我应该使用RETR还是STOR时,
open()

之后,您还缺少了
write
RETR
用于从FTP服务器下载
STOR
用于上传。这非常简单,这就是我使用类似代码从http url获取的内容。如果ftp不需要登录,这将非常好,我正在处理它,但这也是一个选项,只需使用
ftp://user:password@server/path/file.png
我已经修改了您的原始代码,现在应该可以用了:)@PylonsN00b:现在可以用了吗?哦,哇,我还没看到,今晚我会检查一下,我放弃了一段时间。@PylonsN00b:我已经编辑了第一部分,它现在显示的是
image.write
而不是
image.write()
,这不起作用。PS:使用@username引起某人的注意,否则他们可能不会注意;)@沃尔夫,谢谢你,现在就试试看。。。
# Hey we found something! Open the image....
    f = open(image_name_we_want, "wb")
    notions_ftp.retrlines("RETR %s" % image_name_we_want, f)
    send_image = open(image_name_we_want, 'r')

    # ...and send it for processing
    try:
        image_id = product_obj.set_image(send_image, 5, 1)
    except IOError, error:
        log.error("Image to big or corrupt! Skipping Image for product sku: %s" % sku)
        image_id = False
    else:
        if image_id == False:
            log.error("Could not Insert the image for product sku: %s" % sku)
            f.close()
            return False
        else:
            f.close()
            os.remove(image_name_we_want)
            return True
import urllib2
fh = urllib2.urlopen('ftp://server/path/file.png')
file('file.png', 'wb').write(fh.read())