#author("2020-07-22T12:29:47+09:00","default:nobuoki","nobuoki") [[PythonでDBFファイルをCSVファイルに、CSVファイルをDBFファイルに相互変換する話 - Qiita>https://qiita.com/Kanahiro/items/46d845c856546a424dcf]]の[[Kanahiro/Dbf-converter: read and convert .DBF file with Python3.x>https://github.com/Kanahiro/Dbf-converter]]は、日本のGISっ子が大好きな[[基盤地図情報>https://www.gsi.go.jp/kiban/]]のdbfファイルも文字化けせずにcsv変換出来るという素敵スクリプトです #author("2021-02-06T02:25:43+09:00","default:nobuoki","nobuoki") [[PythonでDBFファイルをCSVファイルに、CSVファイルをDBFファイルに相互変換する話 - Qiita>https://qiita.com/Kanahiro/items/46d845c856546a424dcf]]の[[Kanahiro/Dbf-converter: read and convert .DBF file with Python3.x>https://github.com/Kanahiro/Dbf-converter]]は、日本のGISっ子が大好きな[[国土数値情報ダウンロードサービス>https://nlftp.mlit.go.jp/ksj/]]のdbfファイルも文字化けせずにcsv変換出来るという素敵スクリプトです これをコンテナに入れてみました #prism(bash){{{ # ビルド wget -O- https://gist.github.com/kemasoft-gist/85b03e71dcbf9d117074c11ae1e4d2e5/raw | podman build - -t kemasoft/dbfconv # 使いやすくするためにaliasしておく alias dbfconv='podman run --rm -v .:/mnt kemasoft/dbfconv dbfconv' }}} こんな感じで使います #prism(bash){{{ # カレントディレクトリにdbfファイルを置く(コンテナの /mnt にマウントされる) [nobuoki@e130 dbf] $ ls 20200401-行政区画.dbf 20200401-行政区画界線.dbf 20200401-行政区画代表点.dbf 20200401-町字の代表点.dbf 20200401-町字界線.dbf # Dbf-converter 発動 [nobuoki@e130 dbf] $ dbfconv *.dbf cp932encoding is correct. 20200401-行政区画.csv was wroted. cp932encoding is correct. 20200401-行政区画界線.csv was wroted. cp932encoding is correct. 20200401-行政区画代表点.csv was wroted. cp932encoding is correct. 20200401-町字の代表点.csv was wroted. cp932encoding is correct. 20200401-町字界線.csv was wroted. All files were wroted. # 出来上がりを確認 [nobuoki@e130 dbf] $ ls 20200401-行政区画.csv 20200401-行政区画界線.csv 20200401-行政区画代表点.csv 20200401-町字の代表点.csv 20200401-町字界線.csv 20200401-行政区画.dbf 20200401-行政区画界線.dbf 20200401-行政区画代表点.dbf 20200401-町字の代表点.dbf 20200401-町字界線.dbf }}} Dockerfile - スクリプトの配置は /Dbf-converter です - main.py に shebang と実行権限付けて /usr/local/bin/dbconv にシンボリックリンクを張ってます - WORKDIR /mnt しているので、コンテナ実行時に -v path/do/dir:/mnt しておくと母艦のファイルにアクセス出来ます #gist(kemasoft-gist/85b03e71dcbf9d117074c11ae1e4d2e5)