python – 由于不同的“循环样式”导致的不同行为
发布时间:2020-12-20 11:18:19 所属栏目:Python 来源:网络整理
导读:我有一个简单的问题.导航到罚款中的某一行,然后删除所有内容.我使用合适的file.truncate()调用.但是,下面的两个代码片段表现不同. 1) with open(file,"a+b",1) as f: #Navigate to the MARKER while True: line = f.readline() if MARKER in line: f.truncat
我有一个简单的问题.导航到罚款中的某一行,然后删除所有内容.我使用合适的file.truncate()调用.但是,下面的两个代码片段表现不同.
1) with open(file,"a+b",1) as f: #Navigate to the MARKER while True: line = f.readline() if MARKER in line: f.truncate() f.write(stuff) break 2) with open(file,1) as f: #Navigate to the MARKER for line in f: if MARKER in line: f.truncate() f.write(stuff) break (1)表现如预期.但是在(2)的情况下,文件在MARKER之后被截断了几行.我推测有一些缓冲正在进行,但正如你所看到的,我明确地将缓冲行为定义为open()调用的“行缓冲”. 有什么想法吗?我想使用更直观的“for line in file”语法… 解决方法
从
Python documentation起,5.内置类型/ 5.9.文件对象:
顺便说一句:通常不鼓励使用关键字(例如文件)作为变量名. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |