我一直在用香草
def main():
# Do stuff
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
但最近看到人们在做
from absl import app
def main(_):
# Do things
if __name__ == '__main__':
app.run(main)
Run Code Online (Sandbox Code Playgroud)
Abseil 提供了flags.FLAGS
,但我一直在使用ArgumentParser
,它工作得很好,所以 Abseil 在这方面没有胜利。
那么,为什么还要走绳降路线呢?
PS:Reddit上的相关讨论(并没有真正回答这个问题):https://www.reddit.com/r/Python/comments/euhl81/is_using_googles_abseil_library_worth_the/
我想知道是否可以在absl python 中仅记录消息字符串,而不记录时间戳和模块名称。例子
I0108 23:40:57.153055 140614090106688 extractor.py:79] processing file: dfcsdf
I0108 23:40:57.162382 140614090106688 extractor.py:72] ['/topic/fdfgd', dfgsdf']
I0108 23:40:57.162861 140614090106688 extractor.py:79] processing file: f456546fd
I0108 23:40:57.171764 140614090106688 extractor.py:72] ['/topic/1', '/topic/2', '/topic/3']
Run Code Online (Sandbox Code Playgroud)
是否有一个配置可以只记录如下消息
processing file: dfcsdf
['/topic/fdfgd', dfgsdf']
processing file: f456546fd
['/topic/1', '/topic/2', '/topic/3']
Run Code Online (Sandbox Code Playgroud)
我知道我可以用控制台打印替换日志记录或编写自定义记录器,我想知道它是否可以在ABSL日志记录中?
这是代码。我试图通过使用给这个参数“False”值
python file.py --add_depth_loss False
Run Code Online (Sandbox Code Playgroud)
但它仍然打印“True”......这是为什么?
from absl import flags, app
FLAGS = flags.FLAGS
flags.DEFINE_boolean('add_depth_loss', None, 'sss')
flags.mark_flag_as_required('add_depth_loss')
def main(_):
print(FLAGS.add_depth_loss)
if __name__ == '__main__':
app.run(main)
Run Code Online (Sandbox Code Playgroud)