小编use*_*425的帖子

Python使用单个文件记录(功能名称,文件名,行号)

我正在尝试学习应用程序的工作原理.为此,我将调试命令作为每个函数体的第一行插入,目的是记录函数的名称以及我向日志输出发送消息的行号(在代码中).最后,由于此应用程序包含许多文件,因此我想创建一个日志文件,以便我可以更好地理解应用程序的控制流.

这就是我所知道的:

  1. 为了获取函数名称,我可以使用function_name.__name__但我不想使用function_name(这样我就可以Log.info("Message")在所有函数的主体中快速复制和粘贴泛型).我知道这可以在C中使用__func__宏完成,但我不确定python.

  2. 为了获取文件名和行号,我已经看到(并且我相信)我的应用程序正在使用Python locals()函数,但是在我不完全了解的语法中,例如:options = "LOG.debug('%(flag)s : %(flag_get)s' % locals())我尝试使用类似LOG.info("My message %s" % locals())产生的东西{'self': <__main__.Class_name object at 0x22f8cd0>}.有什么意见吗?

  3. 我知道如何使用日志记录并向其添加处理程序以记录到文件,但我不确定是否可以使用单个文件以正确的项目函数调用顺序记录所有日志消息.

我非常感谢任何帮助.

谢谢!

python logging

96
推荐指数
4
解决办法
7万
查看次数

'classmethod'对象不可调用

好的,我有这个代码:

class SomeClass:
    @classmethod
    def func1(cls,arg1):
        #---Do Something---
    @classmethod
    def func2(cls,arg1):
        #---Do Something---

    # A 'function map' that has function name as its keys and the above function
    # objects as values
    func_map={'func1':func1,'func2':func2}

    @classmethod
    def func3(cls,arg1):
        # following is a dict(created by reading a config file) that
        # contains func names as keys and boolean as values that tells
        # the program whether or not to run that function
        global funcList
        for func in funcList:
            if funcList[func]==True:
                cls.func_map[func](arg1)        #TROUBLING PART!!! …
Run Code Online (Sandbox Code Playgroud)

python class-method

21
推荐指数
3
解决办法
2万
查看次数

了解WSGI

我试图了解WSGI的功能并需要一些帮助.

到目前为止,我知道它是服务器和应用程序之间的中间件,用于将不同的应用程序框架(驻留在服务器端)与应用程序连接,前提是所讨论的框架具有WSGI适配器.继续理论部分,我知道服务器与应用程序通信,服务器调用可调用的(带有两个参数:环境变量和start_response函数).这里start_response函数由服务器(?)提供,并由应用程序使用,响应状态和标题后跟响应主体.

我对上面写的内容知之甚少,所以这里有新手问题:1)什么是一般呼叫流程?应用程序将为服务器提供可调用,然后服务器将使用该可调用的方法调用应用程序并使用env_vars和start_response函数作为参数?

2)最让我困惑的是应用程序正在发送请求标头,然后它也会发送响应主体.这是什么类型的请求?

请赐教,因为我无法理解这些东西.

谢谢!

wsgi

13
推荐指数
1
解决办法
2085
查看次数

需要知道何时使用strtok()在两个令牌分隔符之间没有数据出现

我正在尝试对字符串进行标记,但我需要确切知道两个令牌之间何时没有数据.例如,当标记以下字符串" a,b,c,,,d,e"时,我需要知道' d'和' e' 之间的两个空槽...我无法简单地找到它strtok().我的尝试如下所示:

char arr_fields[num_of_fields];
char delim[]=",\n";
char *tok;
tok=strtok(line,delim);//line contains the data

for(i=0;i<num_of_fields;i++,tok=strtok(NULL,delim))
{
    if(tok)
        sprintf(arr_fields[i], "%s", tok);
    else
        sprintf(arr_fields[i], "%s", "-");          
}
Run Code Online (Sandbox Code Playgroud)

用上述例子执行上述代码将字符a,b,c,d,e放入前五个元素中arr_fields是不可取的.我需要每个字符的位置进入数组的特定索引:即如果两个字符之间缺少一个字符,则应该按原样记录.

c strtok

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

python ×2

c ×1

class-method ×1

logging ×1

strtok ×1

wsgi ×1