当前位置: 首页 > 面试题库 >

我可以使用Python将内存中的对象上传到FTP吗?

邢硕
2023-03-14
问题内容

这是我现在正在做的事情:

mysock = urllib.urlopen('http://localhost/image.jpg')
fileToSave = mysock.read()
oFile = open(r"C:\image.jpg",'wb')
oFile.write(fileToSave)
oFile.close
f=file('image.jpg','rb')
ftp.storbinary('STOR '+os.path.basename('image.jpg'),f)
os.remove('image.jpg')

将文件写入磁盘,然后立即删除它们似乎是应该避免的系统额外工作。我可以使用Python将内存中的对象上传到FTP吗?


问题答案:

由于使用鸭式输入,因此文件对象(f在您的代码中)仅需要支持.read(blocksize)与一起使用的调用storbinary。当遇到这样的问题时,我转到源代码,在本例中为lib
/ python2.6 / ftplib.py:

def storbinary(self, cmd, fp, blocksize=8192, callback=None):
    """Store a file in binary mode.  A new port is created for you.

    Args:
      cmd: A STOR command.
      fp: A file-like object with a read(num_bytes) method.
      blocksize: The maximum data size to read from fp and send over
                 the connection at once.  [default: 8192]
      callback: An optional single parameter callable that is called on
                on each block of data after it is sent.  [default: None]

    Returns:
      The response code.
    """
    self.voidcmd('TYPE I')
    conn = self.transfercmd(cmd)
    while 1:
        buf = fp.read(blocksize)
        if not buf: break
        conn.sendall(buf)
        if callback: callback(buf)
    conn.close()
    return self.voidresp()

如前所述,它只需要一个类似文件的对象,实际上它甚至不需要,特别是类似于文件的对象read(n)。StringIO提供了这种“内存文件”服务。



 类似资料:
  • 问题内容: 这是我的工作脚本,它生成图,将其本地保存到磁盘,上载到S3并删除文件: 我想要的是跳过磁盘写入操作,直接从内存中上传绘图。 任何建议如何实现这一目标? 问题答案: 放在一起: 感谢@ padraic-cunningham和@ guyb7的提示!

  • 问题内容: 我有一个Go对象,我想保持其地址在内存中不变。在C#中,可以将对象的位置固定在内存中。Go中有办法做到这一点吗? 问题答案: 保留引用的对象不会移动。没有句柄或间接寻址,并且您获得的地址是永久性的。 从文档中: 请注意,与C语言不同,完全可以返回局部变量的地址。函数返回后,与变量关联的存储仍然存在 设置变量时,可以使用运算符读取此地址,然后可以传递它。

  • 下面您将找到应该调用的函数,而不是: 我可以为这些自定义类型创建工厂,并根据值生成类型,而不是传递给的类型,或者传递一个字符串化的对象(对象/数组、更多的对象/数组)。但我想知道(尤其是后者,它让我发冷)是否真的有必要。文档只提到这个函数,作为向区块链提交事务的一种方式。 我应该用我的工厂解决方案吗?是否有另一个函数,我可以使用它来提交使用类型的事务?或者这不是我应该构造我的链码的方式,我应该考虑

  • 通常,我会这样做: 然而,有没有一种简单的方法可以做到这一点?基本上,类似于:<代码>(窗口)父级。dispose() 还是我总是需要创建一个窗口来存储我的演员?

  • 问题内容: 我想控制全局变量(或全局范围的变量),使其在程序初始化代码中仅设置一次,然后将其锁定。 我对全局变量使用UPPER_CASE_VARIABLES,但是我想有一种确定的方法,无论如何不要更改变量。 python是否提供(或类似)功能? 您如何控制全局范围的变量? 问题答案: Activestate有一个由古老的Alex Martelli 撰写的题为“ Constants in Pytho

  • 本文向大家介绍Python ftp上传文件,包括了Python ftp上传文件的使用技巧和注意事项,需要的朋友参考一下 以下代码比较简单,对python实现ftp上传文件相关知识感兴趣的朋友可以参考下 下面给大家介绍python实现ftp上传下载文件的方法 python本身自带一个FTP模块,可以实现上传下载的函数功能。