首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么必须在python 3中缓冲文本I/O?

为什么必须在python 3中缓冲文本I/O?

提问于 2018-03-13 22:56:48
回答 2关注 0查看 389

Python 2支持非缓冲文本I/O。

在python 3中,同样的方法不起作用。为什么未缓冲的文本I/O被禁用?

代码语言:txt
AI代码解释
复制
> import sys
> sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
builtins.ValueError: can't have unbuffered text I/O

二进制文件仍然工作得很好:

代码语言:txt
AI代码解释
复制
> sys.stdout = os.fdopen(sys.stdout.fileno(), 'wb', 0) # works fine

回答 2

Maybe

回答已采纳

发布于 2018-03-14 07:39:32

这是一个开放的bug,问题#17404(最新更新2013-03-13):http ://bugs.python.org/issue17404

等待你的阿公

发布于 2018-03-14 07:56:57

对于文本文件,如果要逐行使用缓冲,请使用open(..., buffering=1)

来自python文档:

1选择行缓冲(仅在文本模式下可用)

和开发者交流更多问题细节吧,去 写回答
相关文章
golang fmt(格式换 I O接口)
fmt 方法可以大致分为 print, scan两类, 根据基础方法可以构建特定方法。
copy_left
2019/08/21
1.1K0
图解 i++ 和 ++i 的区别!看了必懂
先看一段代码: int i = 0; int a = i++; sout("a的值是:"+i); sout("i的值是:"+i); 最终的编译之后的核心字节码如下 L0 BITPUSH 0 //将常量0压入操作栈 ISTORE_1 //将当前栈顶元素,弹出并保存到局部变量表的slot_1中 L1 ILOAD_1 //从局部变量表的第一个slot槽中,取出该值,压入操作栈顶 IINC 0,1 //直接将slot槽中的值自增(+1)操作,注意此时是与当前栈无关的 ISTORE_2
炒香菇的书呆子
2022/04/18
4560
I-o-C 一篇概览
IoC(Inversion of Control )也被称之为 DI(dependency injection),名称侧重点略有不同。
WindWant
2023/05/09
1.2K0
I-o-C 一篇概览
在Google I / O 2018上观看Flutter
距离Google I / O 2018仅仅一周之遥,Flutter将在活动中展示风格,包括会话,代码,办公时间,交互式沙箱空间等等。
flyou
2019/08/06
1.9K0
在Google I / O 2018上观看Flutter
为什么 2 * (i * i) 比 2 * i * i 效率高?
但如果我把其中的 2 * (i * i) 换成 2 * i * i,程序的平均完成时间就在 0.60s 到 0.65s 之间,这是什么原因导致的呢?
村雨遥
2022/06/15
2.1K0
去O:为什么这么难
去O的话题,可谓由来已久。从十年前阿里提出了这一口号,并率先在公司内部实现了数据库的整体去O开始,到后面从互联网公司到传统企业也纷纷跟进,可以说去O的理念已逐步深入人心。但到直到现在,我们可以看到Oracle在国内的市场依然占有相当大的比例。即使在对外的很多去O宣传中,也大多是以非重度O记案例或非关键业务系统居多,大量核心、关键业务系统仍然采用O的方案。那造成这一现象的原因是什么呢?本文尝试对去O可能存在的难点及应对策略加以分析。下面文字代表个人观点,仅供参考。
用户5548425
2020/11/05
1.1K0
去O:为什么这么难
2019,为什么“去O” 势在必行?
作者简介:韩锋,腾讯云数据库TVP专家,CCIA(中国计算机行业协会)常务理事,Oracle ACE,DBAplus社群联合创始人,ACMUG&CRUG社区顾问。曾就职于当当网、TOM在线等公司。曾担任多家公司首席DBA、数据库架构师,有多年的一线数据库架构、设计、开发经验,精通多种关系型数据库,曾著有《SQL优化最佳实践》一书。
腾讯云数据库 TencentDB
2019/06/13
10.2K0
2019,为什么“去O” 势在必行?
漫画:奇怪,为什么在Java中 2*(i*i) 比 2*i*i 快?
既然我设计的两只小萌宠出场了,也该它们的粑粑出场了,今天这篇文章,我们通过一个故事来深入聊聊 Java 编译背后的秘密。
纯洁的微笑
2019/05/06
8810
漫画:奇怪,为什么在Java中 2*(i*i) 比 2*i*i 快?
为什么周鸿祎会不看好O2O?
在行业有『红衣大炮』之称的周鸿祎近日又语惊四座:在360年会上又开始唱衰O2O了。与别人都在说O2O行业泡沫太大不同,老周上来就说互联网巨头做O2O是有问题的: (有360员工)要去做O2O,其实他就是卖饺子、做煎饼的、做美甲的,反正我很尊重他们的选择。但是我看到很多互联网公司巨头也在里面,丧失了初心迷失了本性……而不是笼统一句话说我们可以连接人与服务,最后我们改卖盒饭了,我觉得那太精神分裂了。 『很多互联网巨头』指的是谁,相信大家都能看得出来,毕竟中国互联网巨头就那几家,而在努力做O2O的,就是200亿投
罗超频道
2018/04/27
7600
为什么说++i的效率比i++高?
这两个表达式从我们初学编程语言的时候就会接触到。前者是自增后取值,后者是取值后自增。 我们看一个简单的例子。
帅地
2019/09/23
6760
为什么说++i的效率比i++高?
为什么说++i的效率比i++高?
这两个表达式从我们初学编程语言的时候就会接触到。前者是自增后取值,后者是取值后自增。 我们看一个简单的例子。
编程珠玑
2019/09/16
1.3K0
为什么说 ++i 的效率比 i++ 高?
这两个表达式从我们初学编程语言的时候就会接触到。前者是自增后取值,后者是取值后自增。
编程范 源代码公司
2019/09/24
6990
为什么说 ++i 的效率比 i++ 高?
Android 11 IORap --通过I / O预取来改善应用启动
在Android 11中,引入了IORap,这是一个新功能,可大大缩短应用程序的启动时间。我们观察到,各种设备上的应用平均启动速度(冷启动)快5%以上。有的用例显示启动时间快20%以上。
用户9732312
2022/05/13
2.5K0
Android 11 IORap --通过I / O预取来改善应用启动
java的IO技术中什么是I什么是O?
马克-to-win:很多老司机还搞不清什么是I什么是O。很简单,我有个土办法。以内存为单位,数据进内存叫In,出内存叫Out。读文件,是数据从硬盘进到内存,所以用in类型流来处理。
马克java社区
2021/05/06
1.7K0
java的IO技术中什么是I什么是O?
python开发_++i,i += 1的区分
这样的语法在上述编程语言中可以实现自增(减),在python中也支持这样的语法,不过在python中
Hongten
2018/09/13
1.4K0
python开发_++i,i += 1的区分
python 字典i
字典     字典类似于你通过联系人名称查找地址和联系人详细情况的地址簿,即,我们把键(名字)和值(详细情况)联系在一起。注意,键必须是唯一的,就像如果有两个人恰巧同名的话,你无法找到正确的信息。     键值对在字典中以这样的方式标记:d = {key1 : value1, key2 : value2 }。注意它们的键/值对用冒号分割,而各个对用逗号分割,所有这些都包括在花括号中。另外,记住字典中的键/值对是没有顺序的。如果你想要一个特定的顺序,那么你应该在使用前自己对它们排序。
py3study
2020/01/13
9590
从磁盘I_O的角度理解SQL查询的成本
数据库存储的基本单位是页,对于一棵 B+ 树的索引来说,是先从根节点找到叶子节点,也就是先查找数据行所在的页,再将页读入到内存中,在内存中对页的记录进行查找,从而得到想要数据,想要查找的,只是一行记录,但是对于磁盘 I/O 来说却需要加载一页的信息,因为页是最小的存储单位。
Michel_Rolle
2023/08/18
3K0
java 为什么wait(),notify(),notifyAll()必须在同步方法/代码块中调用?
在Java中,所有对象都能够被作为"监视器monitor"——指一个拥有一个独占锁,一个入口队列和一个等待队列的实体entity。所有对象的非同步方法都能够在任意时刻被任意线程调用,此时不需要考虑加锁的问题。而对于对象的同步方法来说,在任意时刻有且仅有一个拥有该对象独占锁的线程能够调用它们。例如,一个同步方法是独占的。如果在线程调用某一对象的同步方法时,对象的独占锁被其他线程拥有,那么当前线程将处于阻塞状态,并添加到对象的入口队列中。
bear_fish
2018/09/20
1.9K0
Python_列表解析【i for循环 if i】
要求:列出1~10中大于等于4的数字的平方 #################################################### 1、普通方法: >>> L = [] >>> for i in range(1,11): ... if i >= 4: ... L.append(i**2) ... >>> print L [16, 25, 36, 49, 64, 81, 100] ###########################################
瑞新
2020/07/08
7740
点击加载更多

相似问题

I/O error: Broken pipe?

01.7K

在模仪器上保存用户资料闪退(必现)?

0186

个人使用的 ios app 必花费 688 才可以打包吗?

098

cloudera manager 使用http api如何获取集群资源(cpu,i/o)信息?

0480

远程桌面基本上3分钟必断,为什么?刚刚从新RESET系统,还是这样?

024
相关问答用户
某公司 | 程序员擅长1个领域
擅长2个领域
新浪微博 | 高级总监擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档