回答編集履歴
1
細かい誤字等修正
test
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
## ファイルを調べる
|
4
4
|
|
5
|
-
まず、zaliznia.dbfの中身を調べることにしました。これはどうやら[dB
|
5
|
+
まず、zaliznia.dbfの中身を調べることにしました。これはどうやら[dBASE](https://ja.wikipedia.org/wiki/dBASE)のデータベースファイルらしいので、ファイルフォーマットの仕様を探して読みました。たとえば[ここ](https://www.loc.gov/preservation/digital/formats/fdd/fdd000325.shtml)にあります。
|
6
6
|
|
7
|
-
odを使ってファイルの中身をダンプして、仕様とくらべてみました。dB
|
7
|
+
odを使ってファイルの中身をダンプして、仕様とくらべてみました。dBASE IIIの形式のようですが、ところどころ違っています。あと、一緒に配布されているzaliznia.varファイルについては、仕様のどこにも記述がありません。
|
8
8
|
|
9
9
|
が、フィールドの定義とレコード長、最初のレコードが格納される位置は仕様に基づいて計算できたので、レコードを読んで出力するスクリプトを書いて実行してみました。
|
10
10
|
|
@@ -75,9 +75,9 @@
|
|
75
75
|
|
76
76
|
## Starling databaseについて
|
77
77
|
|
78
|
-
ここまで調べたあとで、[サイトにあった解説](http://starling.rinet.ru/program.php?lan=ru)をみつけ、このサイトで使われているのはStarling
|
78
|
+
ここまで調べたあとで、[サイトにあった解説](http://starling.rinet.ru/program.php?lan=ru)をみつけ、このサイトで使われているのはStarling Databaseというものだと知りました。dBASEを元に拡張されたファイル形式だそうです。
|
79
79
|
|
80
|
-
名前が分かったので、[GitHubにある資料](https://github.com/rhaver/starling)も見つけることができました。Starlingファイル形式の解説文書もあったので、ここまで試したことはほぼ間違いないことがわかりました (なお、文字コードはcp866に改変を加えた独自のものを使ってい
|
80
|
+
名前が分かったので、[GitHubにある資料](https://github.com/rhaver/starling)も見つけることができました。Starlingファイル形式についての解説文書もあったので、ここまで試したことはほぼ間違いないことがわかりました (なお、文字コードはcp866に改変を加えた独自のものを使っているようです)。
|
81
81
|
|
82
82
|
## Pythonでの方法
|
83
83
|
|
@@ -92,7 +92,7 @@
|
|
92
92
|
'''
|
93
93
|
最初のレコードのオフセット。
|
94
94
|
ファイルによって異なるはずだが、簡単のため決め打ちする。
|
95
|
-
オフセットの求めかたはdB
|
95
|
+
オフセットの求めかたはdBASE IIIかStarlingの仕様を参照。
|
96
96
|
'''
|
97
97
|
initial_offset = 0x82
|
98
98
|
'''
|