资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
PycURL 中文版官方文档pycurl A Python interface to the cURL libraryPycurl包是一个libcurl的Python接口.pycurl已经成功的在Python2.2到Python2.5版编译测试过了.Libcurl是一个支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 和 LDAP的客户端URL传输库.libcurl也支持HTTPS认证,HTTP POST,HTTP PUT,FTP上传,代理,Cookies,基本身份验证,FTP文件断点继传,HTTP代理通道等等.Libcurl提供的所有功能都可以通过pycurl接口来使用.接下来的子章节概述怎么使用pycurl接口,并且假定已经知道了libcurl如何工作的.libcurl如何工作的更多信息,请参考curl库的web页面(http:/curl.haxx.se/libcurl/c/).Module Functionalitypycurl.global_init(option) -None选项是以下常量之一:pycurl.GLOBAL_SSL, pycurl.GLOBAL_WIN32, pycurl.GLOBAL_ALL, pycurl.GLOBAL_NOTHING, pycurl.GLOBAL_DEFAULT. 相应的是libcurl的 curl_global_init() 方法.pycurl.global_cleanup() - None相应的是libcurl的curl_global_cleanup()方法.pycurl.version这是liburl当前版本的信息,相应的是liburl的curl_version()方法.用法举例:importpycurlpycurl.versionlibcurl/7.12.3OpenSSL/0.9.7ezlib/1.2.2.1libidn/0.5.12pycurl.version_info() - Tuple相对应的是libcurl中的 curl_version_info() 方法. 返回一个序列信息就像liburl的curl_version_info()方法返回的 curl_version_info_data 结构化数据.用法举例:importpycurlpycurl.version_info()(2,7.12.3,461827,i586-pc-linux-gnu,1565,OpenSSL/0.9.7e,9465951,1.2.2.1,(ftp,gopher,telnet,dict,ldap,http,file,https,ftps),None,0,0.5.12)pycurl.Curl() - Curl object这个函数创建一个同libcurl中的CURL处理器相对应的Curl对象.Curl对象自动的设置CURLOPT_VERBOSE为0, CURLOPT_NOPROGRESS为1,提供一个默认的CURLOPT_USERAGENT和设置CURLOPT_ERRORBUFFER指向一个私有的错误缓冲区.pycurl.CurlMulti() - CurlMulti object这个函数创建一个新的与libcurl中的CURLM处理器相对应的CurlMulti对象.pycurl.CurlShare() - CurlShare object这个函数创建一个新的与libcurl中的CURLSH处理器相对应的CurlShare对象.CurlShare对象可以在Curl对象上传递SHARE选项参数Subsections Curl objects CurlMulti objects CurlShare objects CallbacksCurl ObjectCurl对象具有以下方法:close() - None对应的是libcurl中的curl_easy_cleanup方法.当Curl对象不再被引用时pycurl会自动调用这个方法,但也可直接地调用这个方法.perform() - None对应于libcurl中的curl_easy_perform方法.setopt(option, value) - None对应于libcurl中的curl_easy_setopt方法, option使用libcurl中的CURLOPT_*常量来指定,只可惜CURLOPT_前缀现在已经被去掉了.value的数据类型依赖于option,它可以是一个字符串,整型,长整型,文件对象,列表或是函数.用法举例:importpycurlc=pycurl.Curl()c.setopt(pycurl.URL,http:/www.python.org/)c.setopt(pycurl.HTTPHEADER,Accept:)importStringIOb=StringIO.StringIO()c.setopt(pycurl.WRITEFUNCTION,b.write)c.setopt(pycurl.FOLLOWLOCATION,1)c.setopt(pycurl.MAXREDIRS,5)c.perform()printb.getvalue()getinfo(option) - Result对应于libcurl中的curl_easy_getinfo方法, option同样使用libcurl中的CURLOPT_*常量来指定,只可惜CURLOPT_前缀现在已经被去掉了. Result包含一个整数,浮点数或字符串,这都信赖于给定的option.getinfo方法不能在perform方法未调用或完成之前进行调用.用法举例:errstr() - String返回这个处理器中内部libcurl错误缓冲区的字符串表示.CurlMulti ObjectCurlMulti对象具有以下方法:close() - None对应于libcurl中的curl_multi_cleanup()方法.当CurlMulti对象不再被引用时pycurl会自动调用该方法,也可显示调用该方法.perform() - tuple of status and the number of active Curl objects对应于libcurl中的curl_multi_perform()方法.add_handle(Curl object) - None对应于libcurl中的curl_multi_add_handle()方法.这个方法添加一个有效的Curl对象到CurlMulti对象.重要提示:add_handle没有隐式的增加对Curl对象的引用(因而也没有增加Curl对象的引用次数)remove_handle(Curl object) - None对应于libcurl中的curl_multi_remove_handle()方法.这个方法从CurlMulti对象中移除一个现有的Curl对象.重要提示:remove_handle不会隐式的移除Curl对象的引用(因而不会减少Curl对象的引用次数).fdset() - triple of lists with active file descriptors, readable, writeable, exceptions.对应于libcurl中的curl_multi_fdset()方法.这个方法从CurlMulti对象中提取文件描述信息.返回的列表可以被用于select模块to poll for events.用法举例:importpycurlc=pycurl.Curl()c.setopt(pycurl.URL,http:/curl.haxx.se)m=pycurl.CurlMulti()m.add_handle(c)while1:ret,num_handles=m.perform()ifret!=pycurl.E_CALL_MULTI_PERFORM:breakwhilenum_handles:apply(select.select,m.fdset()+(1,)while1:ret,num_handles=m.perform()ifret!=pycurl.E_CALL_MULTI_PERFORM:breakselect(timeout) - number of ready file descriptors or -1 on timeout这是一个有用的函数,它简化了fdest()和select模块的组合使用.用法举例:importpycurlc=pycurl.Curl()c.setopt(pycurl.URL,http:/curl.haxx.se)m=pycurl.CurlMulti()m.add_handle(c)while1:ret,num_handles=m.perform()ifret!=pycurl.E_CALL_MULTI_PERFORM:breakwhilenum_handles:ret=m.select(1.0)ifret=-1:continuewhile1:ret,num_handles=m.perform()ifret!=pycurl.E_CALL_MULTI_PERFORM:breakinfo_read(max) - numberof queued messages, a list of successful objects, a list of failed objects对应于libcurl中的curl_multi_info_read()方法.这个方法从多重栈中提取至多max个信息然后返回两个列表.第一个列表包含成功完成的操作第二个列表包含每一个失败的curl对象的序列CurlShare ObjectCurlShare对象具有以下方法:setopt(option, value) - None对应于libcurl中的curl_share_setopt方法, option使用libcurl中的CURLOPT_*常量来指定,只可惜CURLOPT_前缀现在改成SH_了.通常value必须是LOCK_DATA_COOKIE 或者说LOCK_DATA_DNS.用法举例:importpycurlcurl=pycurl.Curl()s=pycurl.CurlShare()s.setopt(pycurl.SH_SHARE,pycurl.LOCK_DATA_COOKIE)s.setopt(pycurl.SH_SHARE,pycurl.LOCK_DATA_DNS)curl.setopt(pycurl.URL,http:/curl.haxx.se)curl.setopt(pycurl.S
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号