当前位置: 首页 > 面试题库 >

如何从映射文件中读取行?

丁均
2023-03-14
问题内容

似乎mmap接口仅支持readline()。如果我尝试遍历对象,则会得到字符而不是完整的行。

逐行读取mmap文件的“ pythonic”方法是什么?

import sys
import mmap
import os


if (len(sys.argv) > 1):
  STAT_FILE=sys.argv[1]
  print STAT_FILE
else:
  print "Need to know <statistics file name path>"
  sys.exit(1)


with open(STAT_FILE, "r") as f:
  map = mmap.mmap(f.fileno(), 0, prot=mmap.PROT_READ)
  for line in map:
    print line # RETURNS single characters instead of whole line

问题答案:

遍历an行的最简洁方法mmap

with open(STAT_FILE, "r+b") as f:
    map_file = mmap.mmap(f.fileno(), 0, prot=mmap.PROT_READ)
    for line in iter(map_file.readline, b""):
        # whatever

请注意,在Python 3的前哨参数iter()必须是类型的bytes,而在Python 2它需要一个str(即"",而不是b"")。



 类似资料:
  • 问题内容: 下面的Mappers代码从HDFS读取文本文件正确吗?如果是这样的话: 如果不同节点中的两个映射器尝试几乎同时打开文件,会发生什么情况? 是否不需要关闭?如果是这样,如何在不关闭文件系统的情况下执行此操作? 我的代码是: 问题答案: 这将起作用,并进行一些修改-我假设您粘贴的代码被截断了: 您可以有多个映射器读取同一个文件,但是使用分布式缓存存在更多的局限性(不仅减少了承载文件块的数据

  • 因此,我得到了一个庞大的JSON文件,我需要从中提取数据。JSON格式如下所示: 为了阅读它,我试图创建一个类来映射键和对象。类似这样的东西,类似于这个问题: 但是我被数组卡住了,它包含了更多的对象,而不仅仅是简单的基本数据类型。 JSON文件很大,并且在其中到处都有类似类型的项。我对此相当陌生,可能会犯一些错误。任何朝着正确方向的帮助都是感激的。谢了!

  • 问题内容: 我知道如何读取字节,但是如何在Python中读取位? 我只需要从二进制文件中读取5位(而不是8位[1字节]) 有什么想法或方法吗? 问题答案: Python一次只能读取一个字节。您需要读完整的字节,然后从该字节中提取所需的值,例如 或者,如果您想要5个最低有效位,而不是5个最高有效位: 一些其他有用的位操作信息可以在这里找到:http : //wiki.python.org/moin/

  • maptask:开始刷新映射输出 2017-04-20 20:53:20,101 WARN[main]org.apache.hadoop.mapred.yarnchild:异常运行子级:java.lang.nullPointerException位于org.apache.parquet.avro.avroschemaconverter.convertField(avroschemaconverte

  • 问题内容: 我在JAR文件中有一个文件。这,例如。 我该如何访问?我的源代码是: 问题答案: 您不能使用File,因为此文件在文件系统上并不独立存在。相反,您需要getResourceAsStream(),如下所示:

  • 我正试图在hadoop中编写一个数据连接映射Reduce作业。我觉得我很接近,但我有一个问题,阻止地图1馈入地图2。 我有两个映射器和一个减少,并试图强制Map1从一个文件读取,同时强制Map2从另一个文件读取。我想在减少器中解析结果以格式化连接输出。 我知道默认情况下,当在作业中链接映射器时,作业的输出将是下一个作业的输入,我知道这可以被覆盖,但不成功。来自 map1 的数据被确认将馈送到 ma