2

我知道这可能是一个新手错误,我应该受到普遍批评,但我希望有人有解决方法。

我正在尝试开发这个程序来编辑大量非常大的文本文件。每当我以交互方式处理代码时,我经常会搞砸某些部分并意外打印整个 dang 文件。我知道如何通过切片或其他方式来避免这种情况,但每次我犯错时都会导致 IDLE 崩溃。

我想外面有人可能对此有破解之法。当然,答案很可能只是在终端/emacs/eclipse中做,dummy。

有没有人有解决方案,或者这只是人们忍受的东西?

4

1 回答 1

2

您可以尝试替换sys.stdout以限制产生的输出:

# override.py
import sys
class LimitedWriter:

    def __init__(self, limit):
            self.limit = limit
            self.old_stdout = sys.stdout
            self.active = True
    def toggle(self, flag):
            self.active = flag

    def write(self, value):
            if len(value) > self.limit and self.active:
                    value = value[:self.limit] + "..."
            self.old_stdout.write(value)

__lw__ = LimitedWriter(15) # limit to 15 characters
sys.stdout = __lw__

然后在每个会话中加载它:

>>> import override
>>> print "(o.o)" * 10
(o.o)(o.o)(o.o)...
>>>
>>> import sys
>>> sys.stdout.toggle(False)
>>> print "(o.o)" * 10
(o.o)(o.o)(o.o)(o.o)(o.o)(o.o)(o.o)(o.o)(o.o)(o.o)
于 2013-05-31T23:07:10.467 回答