有这样一个需求:

如果一个函数handle_data()其内部有调用print()直接输出数据到屏幕,但是在某次调用handle_data()时又希望其不输出到屏幕,可以使用装饰器来进行处理。

具体实现代码如下:

import os
import sysdef print_redict_wrapper(input_func):def wrapper(data):with open('temp.dat', 'w') as dest_file:old_out = sys.stdout  # 保存之前的输出位置sys.stdout = dest_file  # 设置当前输出到文件input_func(data)sys.stdout = old_out  # 花园之前的输出位置return wrapper# 这里不使用@ print_redict_wrapper
# 是希望直接调用handle_data()时还是输出到屏幕
def handle_data(data):print(data)if __name__ == '__main__':handle_data('hellohi before')# 下面调用handle_data希望不输出到屏幕# 使用print_redict_wrapper进行包装wrapper_func = print_redict_wrapper(handle_data)wrapper_func('hellohi')handle_data('hellohi after')

代码输出为:

hellohi before
hellohi after

生成的临时文件temp.dat也可以将其删除。

Python print()重定向 不输出到屏幕相关推荐

  1. Python·.·.print()函数格式化输出-超详解

    Python·.·.print()函数格式化输出 print()函数格式为: print(objects, sep=' ', end='\n', file=sys.stdout) 文章目录 Pytho ...

  2. python print不换行输出_python中print如何不换行输出

    让print()函数不换行 在Python中,print()函数默认是换行的.但是,在很多情况下,我们需要不换行的输出(比如在算法竞赛中).那么,在Python中如何做到这一点呢? 其实很简单.只要指 ...

  3. python --print带颜色输出

    第一种[不支持linux] # -*- coding:utf-8 -*- print("\033[1;30m 字体颜色:白色\033[0m") print("\033[1 ...

  4. python输出回车_Python print 如何换行输出?

    Python print 如何换行输出? 在Python中使用print函数,可以在输出内容中加入"\n"换行符,实现换行输出,"\n"是一种计算机语言表达方式 ...

  5. python print函数用法总结

    print函数说明 print() 函数的详细语法格式如下: print (value,...,  sep='',  end='\n',  file=sys.stdout,  flush=False) ...

  6. python print换行_Python小白必备:教你几招如何装逼

    字符串是 Python 中最常用的数据类型.我们可以使用引号( ' 或 " )来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello World!'v ...

  7. python结果输出到文件-python print输出到文件

    要将程序的输出送到一个文件中,需要在 print 语句后面使用 >> 指定一个文件,如下所示: principal = 1000 # 初始金额 rate = 0.05 # 利率 numye ...

  8. python print 输出赋值_Python中赋值和print笔记

    1.在python2.6总nonlocal不可用 2.python中还是可以出现";"的,例如:x = 3 ; y = 5 ; print(x+y) 3.python中的集中赋值: ...

  9. python日志输出到屏幕,python日志写入文件

    python日志输出到屏幕,python日志写入文件 日志 日志是跟踪软件运行时所发生的事件的一种方法.软件开发者在代码中调用日志函数,表明发生了特定的事件.事件由描述性消息描述,该描述性消息可以可选 ...

  10. Python print函数用法,print 格式化输出

    使用print输出各型的 字符串 整数 浮点数 出度及精度控制 strHello = 'Hello Python' print strHello #输出结果:Hello Python #直接出字符串 ...

最新文章

  1. 最新消息!阿里四舍五入无限期延迟复工,字节跳动、腾讯......等企业也再次延迟!...
  2. python无法处理特别大的数据文件_Python实现快速大文件比较代码解析
  3. python语言表白源码-python七夕浪漫表白源码
  4. tapable源码分析
  5. MapReduce多个job同时使用的方式(从网上找到的案例,原始博文:http://www.cnblogs.com/yjmyzz/p/4540469.html)
  6. java -TCP通信
  7. 图论--最短路-- Dijkstra模板(目前见到的最好用的)
  8. hadoop之 Hadoop2.2.0中HDFS的高可用性实现原理
  9. Java:ChronicleMap第3部分,快速微服务
  10. 时间序列经济python_(13)Python初入坑之时间序列基础内容
  11. 【抢购仅限1500册】2019年入门必备Linux系统自学书籍半价促销。
  12. Bresenham直线算法与画圆算法
  13. ipsec over gre与gre over ipsec
  14. dubbo源码 -- 服务导出
  15. adb 黑域app_黑域app|黑域手机工具下载 V1.3_下载 - 偶要下载手机频道
  16. 计算机科学导论课后总结_1
  17. Excel ----- 身份证自动判断男女 公式
  18. volatile能保持线程安全吗_volatile是什么?volatile能保证线程安全性吗?如何正确使用volatile?...
  19. 《面试补习》--来聊聊削峰填谷!
  20. 网页视频的下载方法,电脑如何下载网页视频

热门文章

  1. 李洪强iOS经典面试题30-一个区分度很大的面试题
  2. PowerDesigner生成PowerBuilder扩展属性~
  3. php函数copy和rename的区别
  4. 项目中的文件夹与tomcat/webapp中manager文件夹重名
  5. .NET简谈特性(代码属性)
  6. 1.Linux性能诊断 --- 入门命令100条
  7. 33.卷1(套接字联网API)---调试技术
  8. 3. PSR-3 --- 日志接口
  9. MSCRM plicklist 级联JS
  10. Java中的自定义注解