Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 读取时缺少文本(1024)_Python - Fatal编程技术网

Python 读取时缺少文本(1024)

Python 读取时缺少文本(1024),python,Python,我有一个txt文件,我正在阅读和打印它 代码: 文本打印时,某些行丢失。对于exp: txt文件是: کشاورزی مینوشت را بنویسد! از نظر شما شاید این دو برنامه نویس هر دو ***یکسان باشند اما اتفاقی که می افتد این است که بازار ثابت نمی ماند!*** فرض کنید به خاطر توافق 但事实是: بنویسد! از نظر شما ش

我有一个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个文件。因为我不能发送更多或更少。