小编Bri*_*ian的帖子

logging.error()调用了多少次?

也许它只是不存在,因为我在pydoc中找不到它.但是使用python的日志包,有没有办法查询Logger以找出调用特定函数的次数?例如,报告了多少错误/警告?

python logging

11
推荐指数
2
解决办法
3169
查看次数

从Sun Grid Engine上使用qsub提交的进程获取退出代码

我想通过qsub在Sun Grid Engine上提交作业(现在:Oracle Grid Engine?).我不希望使用-sync yes选项或qrsh,因为我希望我的控制程序是单线程的,并且能够一次启动多个作业.这些选项会阻止我的控制程序的线程.

但是,我想收到我发布的进程的退出状态.从手册页中,似乎无法在不阻塞我的线程的情况下获取此代码.如果没有修改我正在启动的作业以将其退出代码打印到stdout,是否有任何方法可以获得此状态?

exit-code qsub single-threaded sungridengine

8
推荐指数
1
解决办法
4466
查看次数

如何使Eclipse更像Emacs

我对emacs非常熟悉 - 而且我意识到它没有什么是不可能做到的 - 但是有一些东西它不能很好地或有效地完成.因此,在项目之间,我愿意转向使用Eclipse等全功能IDE.

随着肌肉记忆的存在,我想让Eclipse尽可能像emacs一样.我已经发现了优秀的Emacs +插件,它让我大约一半.但是,我仍然缺少我经常依赖的emacs的以下功能:

  • shell:它不仅仅是一个shell,它也是一个缓冲区.

  • 发生:搜索 - >文件...接近我想要的,但我只是想让它搜索当前文件 - 可能是文本文件,日志文件或shell缓冲区,或者其他什么.

  • align-regexp:emacs中这个非常棒的小命令帮助我使文件更具可读性,并且对齐有助于键盘宏.

您会建议使用哪些插件来解决这些问题?你有没有在Eclipse或插件中想念的其他emacs功能?

拜托,没有emacs/vi狂热者问为什么在地球上我会做这样的事情.

eclipse ide emacs

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

如何修改ModelMultipleChoiceField的选择

假设我有一些人为的模型:

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 django django-forms

5
推荐指数
2
解决办法
9516
查看次数

为什么python日志包不支持打印变长args?

当我第一次学习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类来执行此操作的方法吗?

python logging

2
推荐指数
1
解决办法
6252
查看次数