Paste 实例

本文地址:http://blog.youkuaiyun.com/spch2008/article/details/9005885

Paste环境准备

1. 下载paste,放于eclipse目录中

     paste库:http://download.youkuaiyun.com/detail/spch2008/5500979

2.目录结构

  

现在将之前的程序改写,改用Paste进行部署。


LoadApp

'''
Created on 2013-6-2

@author: spch2008
'''

from wsgiref.simple_server import make_server

import routes.middleware
import webob.dec
import webob.exc
from paste.deploy import loadapp

class Controller:
    @webob.dec.wsgify
    def __call__(self, req):
        return webob.Response("Hello World!")


 
class Router(object):
    def __init__(self):
       
        self._mapper = routes.Mapper()
        self._mapper.connect('/spch',  
                        controller=Controller(),  
                        action='index',  
                        conditions={'method': ['GET']})  
        
       
        self._router = routes.middleware.RoutesMiddleware(self._dispatch, self._mapper)
    
    @classmethod
    def app_factory(cls, global_config, **local_config):  
        return cls()
    
    @webob.dec.wsgify
    def __call__(self, req):
        
        return self._router

    @staticmethod
    @webob.dec.wsgify
    def _dispatch(req):
        match = req.environ['wsgiorg.routing_args'][1]
                
        if not match:
            return webob.exc.HTTPNotFound()
        
        app = match['controller']  
        return app
        

if __name__ == "__main__":
      
    app = loadapp('config:C:/paste.ini', name='hello') 
    httpd = make_server('localhost', 8282, app)  
    httpd.serve_forever() 

需要在类中添加一个app_factory方法,然后通过loadapp获得实例对象。

paste.ini放于C盘中,文件内容如下:

[app:hello]  
paste.app_factory = MyRoute:Router.app_factory


Composite Applications

def factory(loader, global_conf, **local_conf):
    print (local_conf)
    return Router()

if __name__ == "__main__":
      
    app = loadapp('config:D:/paste.ini', name='hello') 
    httpd = make_server('localhost', 8282, app)  
    httpd.serve_forever()  

paste.ini配置内容为

[composite:hello]
use = call:MyRoute:factory
date = 2013
author = spch2008
local_conf输出:{'date': '2013', 'author': 'spch2008'}


另一个例子,但此例没调试成,因为可能由于windows没有egg概念吧(猜想!)

[composite:main]
use = egg:Paste#urlmap
/ = mainapp
/files = staticapp

[app:mainapp]
use = egg:MyApp

[app:staticapp]
use = egg:Paste#static
document_root = /path/to/docroot

main使用Paste的urlmap程序,进行url匹配。
匹配"/"转向mainapp段;“/files”转向staticapp段。


Filter Composition

[app:main]
use = egg:MyEgg
filter-with = printdebug

[filter:printdebug]
use = egg:Paste#printdebug

可以使用pipeline进行filter

[pipeline:main]
pipeline = filter1 filter2 filter3 app

[filter:filter1]



### R语言 `paste` 函数的使用方法 在R语言中,`paste` 是一个非常强大的函数,主要用于字符串的连接和格式化处理。其基本语法如下: ```r paste(..., sep = " ", collapse = NULL) ``` #### 参数解释 - **...**: 表示要拼接的一个或多个对象(可以是字符向量、数值或其他可转化为字符串的对象)。 - **sep**: 定义各个元素之间的分隔符,默认为空格 `" "`[^1]。 - **collapse**: 如果提供此参数,则会将整个结果压缩为单一字符串,并通过指定的字符进行连接。 下面是一些具体的例子展示如何使用 `paste` 函数: #### 基本用法 当只需要简单地将几个字符串或者变量组合起来时,可以直接调用 `paste()` 函数: ```r result <- paste("Hello", "World") print(result) # 输出:"Hello World" ``` 这里默认情况下,两个单词之间会被空格分开[^2]。 #### 自定义分隔符 如果希望改变默认的空格作为分隔符的行为,可以通过设置 `sep` 参数来实现自定义分隔方式: ```r custom_separator_result <- paste("FirstPart", "SecondPart", sep = "-") print(custom_separator_result) # 输出:"FirstPart-SecondPart" ``` 上述代码片段展示了如何利用减号 `-` 来替代标准间隔符号[^3]。 #### 合并多组数据形成单个字符串序列 对于更复杂的情况比如合并一系列项目成为一个单独的大串时候需要用到 `collapse` 参数: ```r vector_elements_combined <- paste(c('a', 'b', 'c'), collapse=", ") print(vector_elements_combined) # 输出:"a, b, c" ``` 在这个实例里,字母'a','b'以及'c'被逗号加空格的形式串联起来了[^4]。 #### 综合应用案例 - 数据列名生成器 假设我们有一个大型表格型数据结构(data frame),其中包含许多以某种规律命名的字段如X1,Y1,Z1,X2,Y2等等。如果我们想快速提取特定模式下的若干列出来构成新的子集的话就可以借助于这个技巧了: ```r columns_to_select <- paste0(rep(c("X","Y"), each=3), rep(1:3,times=2)) data_subset <- my_dataframe[, columns_to_select] head(data_subset) ``` 在此处的例子当中,先创建了一个长度适配的新列表包含了所有可能匹配上的候选者们的名字;接着再把这个名单交给原始资料框去做索引定位工作即可完成目标选取动作.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值