使用固定格式文本数据库[英] Working with fixed format text db's

问题描述

我必须使用的许多文件格式都是所谓的
固定格式的记录,文件中的每一行都是一条记录,
并且记录中的每个字段都占用特定数量的空间.

例如,我的一个较旧的 Python 程序包含
下面为一批新的创建固定格式的文本记录
同学们:

新 = 文件("new.dat","w")
如果不是新的:
打印"错误.无法打开文件 new.dat 进行写入."
raw_input("按回车键退出.")
sys.exit(1)

对于新生来说:
new.write(s.ssn.ljust(9))
new.write(s.id.ljust(10))
new.write(s.last[:16].ljust(16))
new.write(s.first[:11].ljust(11))
new.write('' ''.ljust(10)) # 电话号码
new.write('' ''.ljust(1254)) # 清空''filler''空间.
new.write(''2813 '')
new.write(s.major.ljust(5))

#等等...

幸运的是,输出格式还没有改变,所以
没有出现上述维护.

不过,我想要更好的.

是否已经有一个很好的模块可以使用固定格式
有记录吗?没找到.

如果没有,请建议我如何改进上述代码.

--
尼尔·塞鲁蒂
当"渴望"时唱完后,表演者们仿佛置身于
向往.--Music Lit Essay

推荐答案

Neil Cerutti <ho*****@yahoo.com写道:
幸运的是,输出格式还没有改变,所以
维持上述情况没有出现.
问题肯定是当你想改变你必须做的格式时
所以在所有文件中(那么备份呢?)和所有程序
同时.

我会说,维护代码是您最不关心的问题.

您可以更改数据布局,例如,每个字段都由
标记字符,然​​后读/写分隔值.但除非你也
查看程序的所有其他部分,您需要确保您
在任何地方都没有任何其他代码隐式依赖于特定
字段是已知的固定长度.
>
不过,我想要更好的东西.
你到底想达到什么目标?
--
Jeremy CB Nicoll - 我的意见是我自己的.

2007-06-08,Jeremy CB Nicoll <je****@omba.demon.co.ukwrote:
Neil Cerutti <ho*****@yahoo.com 写道:
>幸运的是,输出格式还没有改变,所以没有出现
维护上述内容的问题.

问题肯定是当你想改变格式时
您必须在所有文件中都这样做(以及备份呢
那么?)和所有程序同时进行.
不幸的是,我无法控制格式.这是一个进口
商业数据库应用程序的文件格式.
维护代码是您最不关心的问题,我会
说吧.

您可以更改数据布局,例如每个字段是
由标记字符终止,然后读/写分隔
价值观.但除非您还查看您的所有其他部分
程序,你需要确保你没有任何其他的
隐式依赖特定字段的代码
是一个已知的固定长度.
>不过,我想要更好的东西.

你到底想达到什么目的?
我希望有一个模块可以让我指定一个
固定的文件格式,以及某种书写界面
并读取上述格式的文件.

使用 ad-hoc 代码实际上并不难*,但是
如果没有规范的硬拷贝,该程序将无法破译
手.而且,正如您所说,如果规范确实发生了变化,
ljust、rjust和slice的手写批次会有点
重新配置很痛苦.

但对我来说,最大的弱点是规范不在
代码,还是被代码阅读和使用的,我觉得应该是.

如果什么都不存在,我想我会自己动手.但我愿意
更懒一点,几乎所有已发布的模块都比
我会为自己写什么.;)

当然,根本问题是过时的平面文件
具有固定宽度数据字段的格式.连系
教育已将其大部分数据文件转移到 XML,这
对我来说解析起来要简单得多.

--
Neil Cerutti

在 <sl********************@FIAD06.norwich.edu>,尼尔Cerutti 写道:
新 = 文件("new.dat","w")
如果不是新的:
打印"错误.无法打开文件 new.dat 进行写入."
raw_input("按回车键退出.")
系统退出(1)
嘿,Python 不是 C.文件对象应该*总是*是"真实的".一个错误
通过异常处理.

巧,
Marc ''BlackJack'' Rintsch

本文地址:https://www.itbaoku.cn/post/1050548.html