【问题标题】:Reading only the first values of a file仅读取文件的第一个值
【发布时间】:2018-06-08 19:26:05
【问题描述】:

背景:我有一个大文件,我想从中读取前几个值。我真的不想部分读取整个文件,因为我没有进一步使用它,因此它不会使用不必要的内存并且执行速度更快(因为它不需要读取这个巨大的文件)。


来自documentation 我正在使用:

test.txt

Greetings World :)

test.py:

with open('test.txt', buffering=3) as file:
    a = file.read()
print(a)

它不仅部分读取我的文件。

有没有办法只读取文件的一部分?

【问题讨论】:

    标签: python file io buffer


    【解决方案1】:

    从这个答案What is the use of buffering in python's built-in open() function? 你会看到buffering 实际上并没有读到一个范围。而是在a.read() 中设置一个范围。所以:

    with open('test.txt') as file:
        a = file.read(3) 
    print(a)
    

    如您所愿返回Gre

    documentation

    要读取文件的内容,请调用 f.read(size),它会读取一定数量的数据并将其作为字符串(在文本模式下)或字节对象(在二进制模式下)返回。 size 是一个可选的数字参数。当 size 省略或为负数时,将读取并返回文件的全部内容;

    如果您需要读取文本文件中的值,则可以使用a.seek() 参见seek() function?

    【讨论】:

    • 如果我事先对行长一无所知,我将如何阅读前两行?
    • file.readline() 一次读取一行(读取到 \n 或 EOF)
    • @roganjosh 您可以使用 'yield' 以懒惰(不急切)的方式读取文件,并在您知道第二行结束时停止
    • @Simon 但这违背了不读取整个文件的目的
    • @Sam 尝试运行file.readlines.__doc__ 你应该会看到“可以指定提示来控制读取的行数”
    【解决方案2】:

    你有几个选择。

    file.read() 读取整个文件

    file.read(size)读取大小数据量(文本模式为字符,二进制模式为字节)

    file.readlines()list(file)for line in file:都提供了读取整个文件的方法

    file.readline() 一次返回一行(读取到换行符 (\n) 或文件结尾 (EOF))

    check here 用于文档。

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 2022-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-01
      • 2014-08-03
      • 1970-01-01
      相关资源
      最近更新 更多