XPORT是发布的数据集采用了一堆美国政府机构的二进制文件格式 它做了很多的意义,如果你想读你的IBM大型机的数据文件早在1988年。
如何使用它?
让我们把这个简短而亲切:
进口XPORT
与xport.XportReader(xport_file)为读者:
 对于排在读者:
 打印一行
每一行都将是一个关键的数据集中每个字段的字典。值将是一个Unicode字符串,浮点或int,取决于该字段的文件中指定的类型。
获取文件信息
一旦你有一个XportReader对象,有几个属性和方法,这将使你有关文件的详细信息:
- reader.file:下面的Python文件对象(见下节)。
- reader.record_start:位置(以字节为单位),其中记录开始在文件中(见下节)。
  reader.record_length:每条记录的长度(以字节为单位)(见下节)。
- reader.record_count():在文件中的记录数。 (注意:这将寻求的文件,以确定文件长度的端部)。
- reader.file_info和reader.member_info:包含有关创建数据集的时间和方式的信息类型的字典。
- reader.fields:在数据集中的字段的列表。每个字段是包含以下键,从规范复制的字典:
 结构nameStr的{
 短n-型; / *变量类型:1 = NUMERIC,2 = CHAR * /
 短nhfun; / * HASH n名称(始终为0)的* /
  *短field_length; / *变量的观测长度* /
 短nvar0; / * * VARNUM /
  * CHAR8名; / * Name变量* /
  * char40标签; / * LABEL变量* /
  CHAR8 nform; / * NAME格式* /
 短NFL; / *格式字段长度或0 * /
  *短num_decimals; / * FORMAT小数位数* /
 短NFJ; / * 0 =左对齐,1 = RIGHT JUST * /
 烧焦nfill [2]; / *(未使用的,对齐和FUTURE)* /
  CHAR8 niform; / *名称输入格式* /
 短NIFL; / * INFORMAT长度属性* /
 短nifd; / * INFORMAT小数位数* /
 长非营利机构; / *位置值观测的* /
 其余的char [52]; / *剩下的字段是无关的* /
 };
 注:项目与明星都被重命名从规范给出的短名称。由于这是一个alpha版本,其他的项目可能被重新命名,今后,如果有人告诉我,他们是什么样的。
随机访问记录
如果您要访问的,而不是具体的迭代记录,你可以使用Python的标准文件存取功能和一点点数学。
获得第1000个记录:
reader.file.seek(reader.record_start + reader.record_length * 1000,0)
reader.next()
获得前最近的一次获取记录:
reader.file.seek(-reader.record_length * 2,1)
reader.next()
获取最后一条记录:
reader.file.seek(reader.record_start + reader.record_length *(reader.record_count() - 1),0)
reader.next()
(在这个最后的例子中,请注意,我们不能从文件的末尾求,因为可能有填充字节。良好的旧固定宽度的二进制文件格式)。
请修复/偷这段代码!
我写这件事,因为它似乎可笑,有没有简单的方法来读取大多数编程语言标准的政府数据格式。我可能得到的东西是错误的。如果您发现不解码属性格式的文件,发送一个拉请求。官方规格是在这里。这是令人惊讶的简单的从上世纪80年代的二进制文件格式。
也请随意使用此代码作为基础来编写自己的库为您最喜爱的编程语言。 。政府数据应该是可访问的,人
要求:
- 在Python中
评论没有发现