用cython构建的美味的多部分表单数据解析器。

multifruits的Python项目详细描述


多种水果

用cython构建的美味的多部分表单数据解析器。

安装

pip install multifruits

用法

multifruits有一个Parser类和两个助手:extract_filenameparse_content_disposition

Parser

Parser需要Content-Type头值和一个处理程序,它可以 定义以下一种或多种方法:

on_body_begin()on_part_begin()on_header(name:bytes,value:bytes)on_headers_complete()on_data(data:bytes)on_part_complete()on_body_complete()

示例:

frommultifruitsimportParserclassMyHandler:defon_part_begin(self):self.part=MyPart()defon_header(self,name,value):self.part.headers[name]=valuedefon_data(self,data):self.part.write(data)handler=MyHandler()parser=Parser(handler,request.headers['Content-Type'])parser.feed_data(request.body)# You can pass chunks

助手

parse_content_disposition

获取原始的Content-Disposition头值并返回部署类型 (attachmentform-datainline等等)以及解析为 字典。

示例:

dtype,params=parse_content_disposition(b'inline; filename="foo.html"')assertdtype==b'inline'assertparams=={b'filename':b'foo.html'}
extract_filename

parse_content_disposition中的参数作为dict并尝试 返回适当的str文件名(如filename*)。

示例:

assertextract_filename({b'filename*':"UTF-8''foo-ä-€.html".encode()})=='foo-ä-€.html'

从源构建

您需要安装有cython的virtualenv,然后:

git clone https://github.com/pyrates/multifruits
cd multifruits
make compile
python setup.py develop

测试

运行测试:

make test

致谢

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在Kotlin中加速从短数组到位图的转换   java如何计算用户从5个组合框中选择的项目的总成本   如何实现Java图像处理来进行模板匹配?   java Android Studio Gradle找不到'com'。安卓支持:设计:22.2.0'(Android设计支持库)   Tomcat上的hibernate Java持久性没有名为EntityManager的持久性提供程序   Weblogic中有两个EAR的java Log4j日志记录问题   Java忽略字符串   java stringbuffer和“0&”导致截断或转义   在java中用猜测的字母替换破折号   java使用枚举查找长字符串描述   在Android Studio中选择图像后,java应用程序退出(未调用OnActivityResult)   java什么是类似于Rails的面向对象桌面应用程序框架?   java有没有一种方法可以在调试时永久更改变量的值,从而在后续调用中不被重写?   java NullPointerException从数据库获取数据时,使用注释调用Struts 2中的操作