首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阅读缺失文本(1024)

阅读缺失文本(1024)
EN

Stack Overflow用户
提问于 2015-08-07 12:54:31
回答 4查看 182关注 0票数 1

我有一个txt文件,我正在读取和打印它。

代码:

代码语言:javascript
复制
f=open('e://send.txt','r',encoding='UTF-8')
for i in f:
    text=f.read(1024)
    print(text+'\n\n\n')

f.close()`

当文本打印时,缺少一些行。对于exp : txt文件是:

代码语言:javascript
复制
 کشاورزی مینوشت را بنویسد! از نظر شما شاید این دو برنامه نویس هر دو

 ***یکسان باشند اما اتفاقی که می افتد این است که بازار ثابت نمی ماند!***
    
فرض کنید به خاطر توافق 

但出炉的是:

代码语言:javascript
复制
 بنویسد! از نظر شما شاید این دو برنامه نویس هر دو 
 missing lines
فرض کنید به خاطر توافق 
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-08-07 13:05:23

或者逐行读取文件:

代码语言:javascript
复制
for i in f:
    print(i)

或者把它读成块:

代码语言:javascript
复制
while True:
    text = f.read(1024)
    if not text:
        break
    print(text, eol='')

但不要兼而有之。在您的代码中,被for循环读取到for中的文本将被忽略,这就是您丢失的数据。

票数 4
EN

Stack Overflow用户

发布于 2015-08-07 13:01:18

for i in f将遍历文件的行,read()将从中读取。随着迭代和读取将文件位置向前移动,最终会丢失一些数据。

试着在这里选择一个或另一个。如果这有帮助的话,read()将在EOF上返回一个空字符串。

票数 1
EN

Stack Overflow用户

发布于 2015-08-07 13:00:58

实际上,单循环从文件中读取两次,第一次迭代器语法(隐式),第二次读取调用。如果您使用的是for line in file成语,跳过显式read()

代码语言:javascript
复制
with open('e:\\send.txt','r', encoding='UTF-8') as f:
    for line in f:
        print(line)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31878246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档