Python 读取时缺少文本(1024)
我有一个txt文件,我正在阅读和打印它 代码: 文本打印时,某些行丢失。对于exp: txt文件是:Python 读取时缺少文本(1024),python,Python,我有一个txt文件,我正在阅读和打印它 代码: 文本打印时,某些行丢失。对于exp: txt文件是: کشاورزی مینوشت را بنویسد! از نظر شما شاید این دو برنامه نویس هر دو ***یکسان باشند اما اتفاقی که می افتد این است که بازار ثابت نمی ماند!*** فرض کنید به خاطر توافق 但事实是: بنویسد! از نظر شما ش
کشاورزی مینوشت را بنویسد! از نظر شما شاید این دو برنامه نویس هر دو
***یکسان باشند اما اتفاقی که می افتد این است که بازار ثابت نمی ماند!***
فرض کنید به خاطر توافق
但事实是:
بنویسد! از نظر شما شاید این دو برنامه نویس هر دو
missing lines
فرض کنید به خاطر توافق
实际上,单循环从文件读取两次,第一次是迭代器语法(隐式),第二次是读取调用。如果要对文件中的行使用
,请跳过显式的read()
实际上,单循环从文件读取两次,第一次是迭代器语法(隐式),第二次是读取调用。如果要对文件中的行使用,请跳过显式的read()
for i in f
将在文件的行上迭代,而read()
将从中读取。随着迭代和读取都向前移动文件位置,最终会丢失一些数据
试着在这里选择一个或另一个read()。随着迭代和读取都向前移动文件位置,最终会丢失一些数据
试着在这里选择一个或另一个read()
将在EOF上返回一个空字符串,如果有帮助的话。可以逐行读取文件:
for i in f:
print(i)
或者分块阅读:
while True:
text = f.read(1024)
if not text:
break
print(text, eol='')
但不要两者都做。在您的代码中,由for
循环读入i
的文本将被忽略,这就是您丢失的数据。逐行读取文件:
for i in f:
print(i)
或者分块阅读:
while True:
text = f.read(1024)
if not text:
break
print(text, eol='')
但不要两者都做。在您的代码中,由for
循环读入i
的文本被忽略,这就是您丢失的数据。正如其他人所提到的,使用类似于for循环的文本文件逐行读取,但是for循环非常漂亮且具有python风格,因此我过去做过一件事(如果我需要多次执行此分块读取)将其插入发电机功能以保持清洁
比如:
def chunked(f, chunk_size=1024):
while True:
chunk = f.read(chunk_size)
if not chunk:
break
yield chunk
您可以在代码中调用它,如:
f = open('e://send.txt','r',encoding='UTF-8')
for text in chunked(f):
print(text + '\n\n\n')
这基本上是chepner建议的代码,只是可以保持代码的主体更干净?正如其他人所提到的,使用像in-for-loop这样的文本文件逐行读取它,但是for-loops是漂亮的和pythonic的,所以我过去做过一件事(如果我需要多次执行这种分块读取)将其插入发电机功能以保持清洁
比如:
def chunked(f, chunk_size=1024):
while True:
chunk = f.read(chunk_size)
if not chunk:
break
yield chunk
您可以在代码中调用它,如:
f = open('e://send.txt','r',encoding='UTF-8')
for text in chunked(f):
print(text + '\n\n\n')
这基本上是chepner建议的代码,只是可以保持代码的主体更干净?对于f中的i
,i
是文件的一行。您不需要执行f.read(1024)
。或者,如果您需要,您还需要打印(i)
。我需要一个循环,每次发送1024个文件。因为我不能发送更多或更少。对于删除“i”,您有更好的解决方案吗?对于f中的i,使用i
,i
是文件的一行。您不需要执行f.read(1024)
。或者,如果您需要,您还需要打印(i)
。我需要一个循环,每次发送1024个文件。因为我不能发送更多或更少。您是否有更好的解决方案删除“i”。是的,您是对的!但我需要一个循环,每次发送1024个文件。因为我不能发送更多或更少。是的,你是对的!但我需要一个循环,每次发送1024个文件。因为我不能发送更多或更少。