【问题标题】:How can i override print function in Python 2.2.1 (WebLogic version)如何在 Python 2.2.1(WebLogic 版本)中覆盖打印功能
【发布时间】:2017-01-15 05:30:47
【问题描述】:

如何在 Python 2.2 中覆盖打印功能以便能够将输出重定向到自定义记录器。

【问题讨论】:

  • Python 2.2 中没有print 函数,只有print 语句。

标签: python wlst


【解决方案1】:

我没有要检查的 2.2 版本(为什么要使用这么旧的版本?),但我怀疑以下内容对所有 2.x 都有效。


print 语句识别以>> 开头的第一个参数,以指示要写入哪个文件。

以下内容相同:

print "foo", "bar"
print >>sys.stdout, "foo", "bar"

因此,您可以指定任何file 对象作为目标文件。

f = open("log.txt", "w")
print >>f, "foo", "bar"

如果您想重定向每一个 print 语句(或至少所有未使用如上所示特定文件的语句),您可以简单地将sys.stdout 替换为您想要的文件。

sys.stdout = open("log.txt", "w")
print "foo", "bar"   # Goes to log.txt

如果您需要,原始标准输出仍可通过sys.__stdout__ 获得。

【讨论】:

  • 非常感谢,看来我可以使用它了!但目标不是重定向到文件,而是重定向到记录器。我怎样才能实现一个像对象一样的文件呢?顺便说一句,我使用的是超级旧版本的 python,因为我正在编写必须使用 wlst(WebLogic 语言脚本工具)执行的脚本
  • 两个选项是使用logging 模块而不是print 语句,或者使用subprocess 打开与记录器一起使用的外部命令的管道。 (假设两者都在 2.2 中可用。)
  • 问题是我无法访问打印语句!我无法修改代码。我正在调用使用打印语句的现有函数。
猜你喜欢
  • 2012-07-13
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多