也许它只是不存在,因为我在pydoc中找不到它.但是使用python的日志包,有没有办法查询Logger以找出调用特定函数的次数?例如,报告了多少错误/警告?
我想通过qsub在Sun Grid Engine上提交作业(现在:Oracle Grid Engine?).我不希望使用-sync yes选项或qrsh,因为我希望我的控制程序是单线程的,并且能够一次启动多个作业.这些选项会阻止我的控制程序的线程.
但是,我想收到我发布的进程的退出状态.从手册页中,似乎无法在不阻塞我的线程的情况下获取此代码.如果没有修改我正在启动的作业以将其退出代码打印到stdout,是否有任何方法可以获得此状态?
我对emacs非常熟悉 - 而且我意识到它没有什么是不可能做到的 - 但是有一些东西它不能很好地或有效地完成.因此,在项目之间,我愿意转向使用Eclipse等全功能IDE.
随着肌肉记忆的存在,我想让Eclipse尽可能像emacs一样.我已经发现了优秀的Emacs +插件,它让我大约一半.但是,我仍然缺少我经常依赖的emacs的以下功能:
shell:它不仅仅是一个shell,它也是一个缓冲区.
发生:搜索 - >文件...接近我想要的,但我只是想让它搜索当前文件 - 可能是文本文件,日志文件或shell缓冲区,或者其他什么.
align-regexp:emacs中这个非常棒的小命令帮助我使文件更具可读性,并且对齐有助于键盘宏.
您会建议使用哪些插件来解决这些问题?你有没有在Eclipse或插件中想念的其他emacs功能?
拜托,没有emacs/vi狂热者问为什么在地球上我会做这样的事情.
假设我有一些人为的模型:
class Author(Model):
name = CharField()
class Book(Model):
title = CharField()
author = ForeignKey(Author)
Run Code Online (Sandbox Code Playgroud)
让我们说我想使用ModelForm for Book:
class BookForm(ModelForm):
class Meta:
model = Book
Run Code Online (Sandbox Code Playgroud)
到目前为止简单.但是我们还要说我的数据库中有很多作者,而且我不想拥有这么长的多选字段.所以,我想在BookForm的ModelMultipleChoiceField作者字段上限制查询集.让我们也说我想要的查询集直到__init__,因为它依赖于要传递的参数.
这似乎可以解决这个问题:
class BookForm(ModelForm):
class Meta:
model = Book
def __init__(self, letter):
# returns the queryset based on the letter
choices = getChoices(letter)
self.author.queryset = choices
Run Code Online (Sandbox Code Playgroud)
当然,如果这才有效,我就不会在这里.这让我产生了一个AttributeError.'BookForm'对象没有属性'author'.所以,我也试过这样的东西,我尝试覆盖ModelForm的默认字段,然后再设置它:
class BookForm(ModelForm):
author = ModelMultipleChoiceField(queryset=Author.objects.all())
class Meta:
model = Book
def __init__(self, letter):
choices = getChoices(letter)
self.author.queryset = choices
Run Code Online (Sandbox Code Playgroud)
这产生了相同的结果.
有人知道这是怎么做的吗?
当我第一次学习Python时,我习惯这样做:
print "text", lineNumber, "some dictionary", my_dict
Run Code Online (Sandbox Code Playgroud)
当我编写自己的日志记录工具时,我自然希望能够提供任意大小的项目列表,所以我这样做:
def error(*args):
print ERR_PREFIX,
for _x in args:
print _x,
print "\r\n",
error("text", lineNumber, "some dictionary", my_dict)
Run Code Online (Sandbox Code Playgroud)
现在我想开始使用日志包,因为它有更多的好东西,我不想复制他们的努力.总的来说,它看起来像一个可以做很多事情的干净设计.但是我因为你不能再使用相同的项目列表来展示它而受到阻碍.相反,我必须将所有调用更改为更像这样的内容:
error("text %d some dictionary %s" % (lineNumber, my_dict))
Run Code Online (Sandbox Code Playgroud)
或者,我可以做一些非常愚蠢的事情:
error(' '.join(map, str(("text", lineNumber, "some dictionary", my_dict))))
Run Code Online (Sandbox Code Playgroud)
问题是,为什么省略这样一个明显的用例?如果您想直接从典型的"打印"声明转到新的日志记录设施,这不应该更容易吗?
作为后续问题,您能想到一种覆盖Logger类来执行此操作的方法吗?