2014-09-05 3 views
1

저는 최근에 pycurl을 사용하기 시작했으며 현재 setop pycurl.FORM_FILE을 사용하고 있습니다. 하지만 보내려는 데이터는 문자열에 들어 있으므로 다음 메소드가 읽을 수 있도록 파일을 작성하는 것은 이상한 일입니다.pycurl.FORM_FILE 대신 문자열을 보내거나 스트림 객체를 사용하는 방법이 있습니까?

내 질문은 : pycurl.FORM_FILE 대신 전송할 문자열이나 파일 객체와 같은 스트림 객체를 사용하는 대안이 있습니까?

libcurl의 FORM_STREAM과 유사합니다.

readdata 및 readfunction은 다중 파트 양식의 게시물에는 작동하지 않습니다. 이 같은

뭔가 :

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() 

감사합니다!

답변

0

StringIOhttps://docs.python.org/2/library/stringio.html을 살펴보십시오. 파일과 같은 객체를 만들 수 있습니다.

>>> 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'] 
>>> 
+0

팁 주셔서 감사합니다. 예 StringIO를 사용하려고하지만 StringIO 객체는 파일 객체와 같으며 FORM_FILE은 파일을 여는 데 사용하는 파일 이름을 사용합니다. 따라서 StringIO 객체를 인수로 전달할 수 없습니다. –

+0

오, 알았어. – Vor