Python论坛  - 讨论区

标题:[python-chinese] 请问怎么获得函数的输出呢?

2006年02月27日 星期一 12:23

recordus recordus at gmail.com
Mon Feb 27 12:23:12 HKT 2006

比如有这样的函数:
def hello():
    print "Hello."

怎样才能在程序中获取这个函数的输出内容呢?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060227/950dadc1/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年02月27日 星期一 12:27

=?ISO-2022-JP?B?GyRCcjJDaRsoQg==?= weizhong2004 at gmail.com
Mon Feb 27 12:27:18 HKT 2006

在输出的同时,log一份到log文件

--

开飞机的舒克
http://www.lvye.org/shuke
msn:weizhong at netease.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060227/2b091a56/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年02月27日 星期一 12:30

刘鑫 march.liu at gmail.com
Mon Feb 27 12:30:31 HKT 2006

你是不是想要
def hello():
    return "Hello."


2006/2/27, recordus <recordus at gmail.com>:
>
> 比如有这样的函数:
> def hello():
>     print "Hello."
>
> 怎样才能在程序中获取这个函数的输出内容呢?
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>


--
欢迎访问:
http://blog.csdn.net/ccat

刘鑫
March.Liu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060227/54217273/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年02月27日 星期一 12:32

limodou limodou at gmail.com
Mon Feb 27 12:32:01 HKT 2006

On 2/27/06, recordus <recordus at gmail.com> wrote:
> 比如有这样的函数:
> def hello():
>     print "Hello."
>
> 怎样才能在程序中获取这个函数的输出内容呢?

最简单的是把 print 改为 return 。别外hack的方式就是把标准输出重定向到你的文件对象中:

def hello():
    print 'hello'

import sys
import StringIO

buf = StringIO.StringIO()
old = sys.stdout  #保存旧的
sys.stdout = buf  #替换成你的
hello()                 #输出,但看不到,因为输出到buf中去了
sys.stdout = old  #恢复
print "out=", buf.getvalue()  #再次输出

--
I like python!
My Blog: http://www.donews.net/limodou
NewEdit Maillist: http://groups.google.com/group/NewEdit

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年02月27日 星期一 17:12

mep kebowang at gmail.com
Mon Feb 27 17:12:34 HKT 2006

On 2/27/06, limodou <limodou at gmail.com> wrote:
> 最简单的是把 print 改为 return 。别外hack的方式就是把标准输出重定向到你的文件对象中:
>
> def hello():
>    print 'hello'
>
> import sys
> import StringIO
>
> buf = StringIO.StringIO()
> old = sys.stdout  #保存旧的
> sys.stdout = buf  #替换成你的
> hello()                 #输出,但看不到,因为输出到buf中去了
> sys.stdout = old  #恢复
> print "out=", buf.getvalue()  #再次输出

可以写成"@"方式的:)

--
Best Regards,
mep

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年02月27日 星期一 18:02

ajax chelsea ajaxchelsea at gmail.com
Mon Feb 27 18:02:53 HKT 2006

怎么写?

2006/2/27, mep <kebowang at gmail.com>:
>
> On 2/27/06, limodou <limodou at gmail.com> wrote:
> > 最简单的是把 print 改为 return 。别外hack的方式就是把标准输出重定向到你的文件对象中:
> >
> > def hello():
> >    print 'hello'
> >
> > import sys
> > import StringIO
> >
> > buf = StringIO.StringIO()
> > old = sys.stdout  #保存旧的
> > sys.stdout = buf  #替换成你的
> > hello()                 #输出,但看不到,因为输出到buf中去了
> > sys.stdout = old  #恢复
> > print "out=", buf.getvalue()  #再次输出
>
> 可以写成"@"方式的:)
>
> --
> Best Regards,
> mep
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060227/d18aaf10/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年02月27日 星期一 19:01

mep kebowang at gmail.com
Mon Feb 27 19:01:36 HKT 2006

On 2/27/06, ajax chelsea <ajaxchelsea at gmail.com> wrote:
> 怎么写?


import sys
import StringIO

buf = StringIO.StringIO()

def redirector(g):
    def func(*args, **kwargs):
        old = sys.stdout
        global buf
        sys.stdout = buf
        try:
            return g(*args, **kwargs)
        finally:
            sys.stdout = old
    return func

@redirector
def hello():
    print 'hello'

hello()
print "out=", buf.getvalue()

有点简陋

--
Best Regards,
mep

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号