我正在使用一个模块,当它输出错误时,它只会打印该错误并继续执行脚本,我想将该错误放入变量中,但是由于这种行为,我只能做例外,除了Exception作为e,所以我正在寻找一种将先前打印的行放入变量的方法 注意:我尝试在模块中寻找它的打印位置,但找不到它
答案 0 :(得分:0)
好吧,这不是很漂亮,但是您可以(希望写不会做任何有趣的事情)尝试劫持<li class="nav-item px-3 fixed-bottom">
<NavLink class="nav-link" href="" Match=NavLinkMatch.All>
<span class="oi oi-arrow-thick-left" aria-hidden="true"></span>Logout
</NavLink>
</li>
(或sys.stdout.write()
,具体取决于脚本的写入位置)。< / p>
这可能是这样做的一种方式,虽然可能很丑陋:
stderr
这将为您提供import sys
class Wrap:
def __init__(self):
self.last_line = None
self._next_line = ''
def write(self, text, *args, **kwargs):
sys.__stdout__.write(text, *args, **kwargs)
self._next_line += text
try:
self.last_line = self._next_line.split('\n')[-2]
self.next_line = self._next_line.split('\n')[-1]
except IndexError:
# We did not have \n yet and _next_line did not split
# into at least two items
pass
save_stdout = sys.stdout
sys.stdout = Wrap()
print('xxx\nzzz') # This was that function you wanted to call
last_line = sys.stdout.last_line
sys.stdout = save_stdout
print(last_line)
作为输出。即zzz
是我们的包装程序时,最后一行打印(不添加换行符(重新))。
您当然可以只编写一个函数包装器,并使用它来正式化hack。