gpt4 book ai didi

python - readline() 在读取文本文件时如何在幕后工作?

转载 作者:太空狗 更新时间:2023-10-30 02:17:57 28 4
gpt4 key购买 nike

我想了解 readline() 如何从文本文件中获取一行。关于编译器如何解释 Python 语言以及 CPU 如何处理的具体细节,我想知道的是:

  1. 假设连续调用 readline() 逐行读取文本,readline() 如何知道要读取哪一行文本?
  2. 有没有办法从文本中间开始阅读一行文本?这在 CPU 方面如何运作?

我是一个“初学者”(我有大约 4 年的“更简单”的编程经验),所以我无法理解技术细节,但如果它可以帮助其他人理解,请随意扩展!

最佳答案

使用文件 file.txt 的示例:

fake file
with some text
in a few lines

问题 1:假设连续调用 readline() 逐行读取文本,readline() 如何知道要读取哪一行文本?

当您在 Python 中打开一个文件时,它会创建一个 file 对象。文件对象充当文件描述符,这意味着在任何一个时间点,它们都指向文件中的特定位置。当您第一次打开文件时,该指针位于文件的开头。当您调用 readline() 时,它会将指针向前移动到它读取的下一个换行符之后的字符。

调用 file 对象的 tell() 函数返回文件描述符当前指向的位置。

with open('file.txt', 'r') as fd:
print fd.tell()
fd.readline()
print fd.tell()

# output:
0
10
# Or 11, depending on the line separators in the file


问题 2:有没有办法从文本的中间开始阅读一行文本?这在 CPU 方面如何工作?

首先,读取文件与 CPU 没有任何关系。它与操作系统文件系统 有关。这两者都决定了如何读取和写入文件。 Barebones explanation of files

对于文件中的随机访问,您可以使用 mmap python模块。本周网站的 Python 模块有一个 great tutorial .

例子,跳转到例子文件的第2行,一直读到最后:

import mmap
import contextlib

with open('file.txt', 'r') as fd:
with contextlib.closing(mmap.mmap(fd.fileno(), 0, access=mmap.ACCESS_READ)) as mm:
print mm[10:]

# output:
with some text
in a few lines

关于python - readline() 在读取文本文件时如何在幕后工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38401864/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com