我正在使用python日志记录模块在我的python代码中记录事件.我有2个日志文件,我也希望记录,一个包含用户信息,另一个包含更详细的开发日志文件.我已将两个日志记录文件设置为我想要的级别(usr.log = INFO和dev.log = ERROR),但无法解决如何将日志记录限制为usr.log文件,因此只写入INFO级别日志到日志文件而不是INFO加上其他上面的例如INFO,WARNING,ERROR和CRITICAL.
这基本上是我的代码: -
import logging
logger1 = logging.getLogger('')
logger1.addHandler(logging.FileHandler('/home/tmp/usr.log')
logger1.setLevel(logging.INFO)
logger2 = logging.getLogger('')
logger2.addHandler(logging.FileHandler('/home/tmp/dev.log')
logger2.setLevel(logging.ERROR)
logging.critical('this to be logged in dev.log only')
logging.info('this to be logged to usr.log and dev.log')
logging.warning('this to be logged to dev.log only')
Run Code Online (Sandbox Code Playgroud)
任何帮助都会非常感谢你.
我正在尝试了解urllib2如何工作以及如何在发送实际请求或响应之前封装其各种组件.
到目前为止,我有:
theurl = "www.example.com"
Run Code Online (Sandbox Code Playgroud)
这显然指定了要查看的URL.
req = urllib2.Request(theurl)
Run Code Online (Sandbox Code Playgroud)
不知道这是做什么的,因此问题.
handle = urllib2.urlopen(req)
Run Code Online (Sandbox Code Playgroud)
这个获取页面并完成所需的所有请求和响应.
所以我的问题是,urllib2.Request实际上做了什么?
试着看看它以获得一个我尝试过的想法
print req
Run Code Online (Sandbox Code Playgroud)
刚刚得到
<urllib2.Request instance at 0x123456789>
Run Code Online (Sandbox Code Playgroud)
我也试过了
print req.read()
Run Code Online (Sandbox Code Playgroud)
得到了:
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib64/python2.4/urllib2.py, line 207, in `__`getattr`__`
raise AttributeError, attr
AttributeError: read
Run Code Online (Sandbox Code Playgroud)
所以我显然做错了什么.如果有人可以在我的两个问题中提供帮助,那就太棒了.
我正在为接受命令行参数的模块编写单元测试。我在模块中使用 optparse 来接受参数。
因此,当我直接执行模块时,我只需键入:-
module.py -e 42 -g 84
Run Code Online (Sandbox Code Playgroud)
到目前为止,在我的单元测试中,我只是创建了一个模块实例来测试然后调用一个特定的方法:-
instance = module.className()
instance.method()
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何将命令行参数从另一个模块(例如单元测试)传递给 module.py 吗?
我是否在我的单元测试中使用 optparse 并在生成 module.py 实例时以某种方式合并?
提前致谢。
我正在使用 IMAPClient (Python) 从我的电子邮件服务器中检索电子邮件,方法是检查标有“\Recent”的电子邮件。阅读电子邮件后,电子邮件服务器会自动将电子邮件标志设置为“\Seen”。
我想要做的是将电子邮件标志重置为“\Recent”,因此当我直接在服务器上查看电子邮件时,它仍然显示为未读。
我发现当我尝试使用 IMAPClient 的“set_flag”定义将“\Recent”标志添加到电子邮件时,IMAPClient 抛出异常。添加任何其他标志都可以正常工作。
IMAPClient 文档说“最近”标志是只读的,但我想知道是否还有办法将电子邮件标记为未读。
根据我的理解,像 Thunderbird 这样的电子邮件软件允许您将电子邮件设置为未读,所以我认为必须有办法做到这一点。
谢谢。
我的问题来自另一个stackoverflow问题: - "如何在Python中获取xml文件的根节点?"
from xml.etree import ElementTree as ET
path = 'C:\cool.xml'
et = ET.parse ( path )
root = et.getroot()
Run Code Online (Sandbox Code Playgroud)
当我提取并打印根标签时,我收到: -
<Element 'root' at 0x1234abcd>
Run Code Online (Sandbox Code Playgroud)
然后我想检查根标签是否有某个标题,如何只提取标签名称?
如果我尝试:
if root == "root":
print 'something'
Run Code Online (Sandbox Code Playgroud)
它不起作用,所以我假设我需要将'root'转换为文本或类似的东西?我是Python的新手.
我编写了一些代码,其中包含从超类继承变量的main和许多子类.
例如
class superclass(object):
def __init__(self, var1, var2):
self.var1 = var1
self.var2 = var2
class subclass1(superclass):
def method1(self):
pass
class subclass2(superclass):
def method1(self):
pass
Run Code Online (Sandbox Code Playgroud)
主要没有显示,也没有用于选择要调用的子类的选项工厂,但希望给出的信息就足够了.
我希望将这些类转换为可导入的独立模块.预计将来会编写其他子类,所以我想知道是否可以将每个子类和超类保存为单独的模块,并且子类仍然可以使用/访问超类变量和定义.
这背后的原因是简化了任何未来子类的编写.这意味着它们可以作为独立模块编写,并且不必将先前的子类和超类作为开发的一部分进行处理,但是它们仍然可以使用suberclasses变量和定义.
我不确定它是如何工作的,或者它是否可以这样做.我是否只将所有类保存为superclass.py,subclass1.py和subclass2.py并将它们全部导入?????
希望有道理.
谢谢.
我正试图去除部分字符串.
例如地带: -
a = xyz-abc
Run Code Online (Sandbox Code Playgroud)
离开:-
a = -abc
Run Code Online (Sandbox Code Playgroud)
我通常会使用lstrip例如
a.lstrip('xyz')
Run Code Online (Sandbox Code Playgroud)
但是在这种情况下我不知道xyz会是什么,所以我需要一种方法来去除' - '左边的所有内容.
是否可以使用lstrip设置该选项,或者我必须以不同的方式进行此操作?
谢谢.
我正在使用ElementTree从xml文件中的特定标记中成功提取值.如果不存在必需的标记,我想添加一些保护级别,我想抛出异常.
我发现ElementTree返回值"None"来代替缺少的标记.但是我甚至无法让那个工作对我有利:(
value = xmlTree.findtext('tag')
print value
Run Code Online (Sandbox Code Playgroud)
如果标签"tag"不存在,将打印"None".
所以我试过了
if value == "None":
print "tag not present"
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,它不会抓住它?
我的下一个想法是看看ElementTree是否有异常构建,可以检测到丢失的标签,但也没有运气.
我正在使用SMTP并使用email.mime来提供标头结构.出于某种原因,当尝试添加超过特定长度的标题时,会在我的标题行中添加换行符.
例如
from email.mime.text import MIMEText
message = 'some message'
msg = MIMEText(message)
msg.add_header('some header', 'just wondering why this sentence is continually cut in half for a reason I can not find')
print msg['some header']
print msg
Run Code Online (Sandbox Code Playgroud)
print msg ['some header']打印: -
some header: just wondering just wondering why this sentence is continually cut in half for a reason I can not find
Run Code Online (Sandbox Code Playgroud)
打印消息打印: -
some header: just wondering why this sentence is continually cut in half for a
reason …Run Code Online (Sandbox Code Playgroud)