找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1808|回复: 2

[求助] Python3.x与Python2.x的print差异问题

1

主题

2

帖子

2

积分

贫民

积分
2
sbleo 发表于 2018-11-6 17:27:17 | 显示全部楼层 |阅读模式
入门帖子啊,多谢前辈大侠指点!

学习的脚本是Python2.x系列的,Python2.7的脚本:
import sys

class MyLog(object):
    def __init__(self, file_obj = sys.stdout):
        self.file_obj = file_obj
    def log(self, s):
        print >> self.file_obj, s

if __name__ == '__main__':
    log_obj = MyLog()
    log_obj.log('hello world 3')
运行结果:
hello world 3

尝试修改为Python3.7的脚本:
import sys

class MyLog(object):
    def __init__(self, file_obj = sys.stdout):
        self.file_obj = file_obj
    def log(self, s):
        print(s, self.file_obj)

if __name__ == '__main__':
    log_obj = MyLog()
    log_obj.log('hello world 3')

运行结果:
hello world 3 <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>

问题: 为啥后面有一坨字符串 <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>
需要怎么修改才能正常显示hello world 3?

回复

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb 发表于 2018-11-7 12:03:55 | 显示全部楼层
本帖最后由 uitb 于 2018-11-7 12:06 编辑

用stdout的话,直接self.file_obj.write('hello world 3')
或者你非要用print 的话,把参数的关键字带上print('hello world 3', file=self.file_obj)
回复 支持 反对

使用道具 举报

1

主题

2

帖子

2

积分

贫民

积分
2
sbleo  楼主| 发表于 2018-11-7 13:45:13 | 显示全部楼层
多谢!原来的语句缺少关键字file, 更正为print(s, file=self.file_obj)或者self.file_obj.write(s)后都可以正常运行。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表