Python 除了pycurl.FORM_文件之外,还有其他方法可以接收要发送的字符串或流对象吗?

Python 除了pycurl.FORM_文件之外,还有其他方法可以接收要发送的字符串或流对象吗?,python,http,libcurl,pycurl,Python,Http,Libcurl,Pycurl,我最近开始使用pycurl,目前正在使用setop pycurl.FORM_文件。但是我想要发送的数据是字符串,所以写一个文件只是为了让下一个方法能够读取它是很奇怪的 所以我的问题是:除了pycurl.FORM_文件之外,是否还有其他方法可以接收要发送的字符串或流对象(如FILE对象) 从libcurl形成_流也很相似 readdata和readfunction不适用于包含多部分表单的post 大概是这样的: import pycurl c = pycurl.Curl() c.setopt(c

我最近开始使用pycurl,目前正在使用setop pycurl.FORM_文件。但是我想要发送的数据是字符串,所以写一个文件只是为了让下一个方法能够读取它是很奇怪的

所以我的问题是:除了pycurl.FORM_文件之外,是否还有其他方法可以接收要发送的字符串或流对象(如FILE对象)

从libcurl形成_流也很相似

readdata和readfunction不适用于包含多部分表单的post

大概是这样的:

import pycurl
c = pycurl.Curl()

c.setopt(c.URL, 'http://someurl')
c.setopt(c.FORM_FILE, 'myfile.gz')
c.perform()

c.close()
将成为:

import pycurl
c = pycurl.Curl()

fobj = open('myfile.gz', 'rb')
c.setopt(c.URL, 'http://someurl')
c.setopt(c.FORM_STREAM, fobj)
c.perform()
fobj.close()
c.close()

提前谢谢

看看
StringIO
。它将允许您创建类似文件的对象

>>> import StringIO
>>> f_obj = StringIO.StringIO('foo')
 >>> dir(f_obj)
['__doc__', '__init__', '__iter__', '__module__', 'buf', 'buflist', 'close', 'closed', 'flush', 'getvalue', 'isatty', 'len', 'next', 'pos', 'read', 'readline', 'readlines', 'seek', 'softspace', 'tell', 'truncate', 'write', 'writelines']
>>> 
Ok找到了解决办法

我正在寻找的方法是pycurl.FORM_BUFFER和pycurl.FORM_BUFFERPTR

可在以下测试中找到其用途:


警告:如果您有pycurl的旧版本,它可能没有此功能。

谢谢您的提示。是的,我想使用StringIO,但StringIO对象类似于文件对象,并且表单_文件采用它用来打开文件的文件名。因此,不可能将StringIO对象作为参数传递。