もしもコラボがなかったならば
Google ColaboratoryはPythonの実行環境を提供してくれるサービスですが、コラボがなかったら我々は途方に暮れていたのでしょうか?
いいえ、もちろん違います。
コラボでボートレース(競艇)のデータを収集しようとする今回の企画の方が異常であって(笑)、普通はローカル(パソコン)でPythonの実行環境を整えます。
ただ、コラボは非常に利便性が高いため、いずれはこういったクラウドサービスを利用するやり方が主流になるかもしれません。今後の動向が気になりますね。
パソコンに環境を用意する方法は、また別の機会にご紹介できればと思います。
lhafileモジュールをインストールしよう
前の章でダウンロードした競争成績のファイルは、LZH形式(.lzh)で圧縮されています。この形式は今では珍しくなりましたが、かつて日本ではZIP形式よりもメジャーな圧縮形式でした。
パソコンに専用のアプリケーション(Lhaplusなど)をインストールしてファイルを解凍することもできますが、ここではコラボでファイルを解凍する手順を説明します。
PythonでLZH形式のファイルを解凍するには「lhafile」というモジュールを利用します。このモジュールはデフォルトのコラボ環境にないため、追加でインストールする必要があります。
前の章でご説明した通り、コラボでは先頭に「!」を入れることでLinuxの各種コマンドを実行できます。Pythonのモジュールを追加するには「pip」コマンドを使います。以下の通りにコマンドを実行してください。
!pip install lhafile
lhafileモジュールは、コラボ(Linux)やMacではpipコマンドでインストール可能です。Windowsではエラーとなることが確認されたのでご注意ください。Windowsでもインストールできるようになってました!誰かがwhlファイルを更新してくれた気がします。ありがたいですね。
また、コラボで提供される環境は毎回初期化されるため、スクリプトを動かす前にpipコマンドを毎回実行する必要がある点も併せてご注意ください。
Pythonスクリプトを記述しよう
ここでは前の章でダウンロードした競争結果のファイルを解凍します。
初心者の人は、コラボで作成したノートブックのセルに以下のスクリプトを丸っとコピーして実行するだけです。コラボではなくローカル環境で実行する場合は、ファイルの保存先を任意の場所に変更してください。
それでは実行してみましょう。コラボでGO!
# ダウンロードしたLZHファイルが保存されている場所を指定
LZH_FILE_DIR = "drive/My Drive/results_lzh/"
# 解凍したファイルを保存する場所を指定
TXT_FILE_DIR = "drive/My Drive/results_txt/"
# 正規表現をサポートするモジュール re をインポート
import re
# LZH形式のファイルを解凍するパッケージ lhafile をインポート
import lhafile
# オペレーティングシステムの機能を利用するパッケージ os をインポート
import os
# 開始合図
print("作業を開始します")
# ファイルを格納するフォルダを作成
os.makedirs(TXT_FILE_DIR, exist_ok=True)
# LZHファイルのリストを取得
lzh_file_list = os.listdir(LZH_FILE_DIR)
# ファイルの数だけ処理を繰り返す
for lzh_file_name in lzh_file_list:
# 拡張子が lzh のファイルに対してのみ実行
if re.search(".lzh", lzh_file_name):
file = lhafile.Lhafile(LZH_FILE_DIR + lzh_file_name)
# 解凍したファイルの名前を取得
info = file.infolist()
name = info[0].filename
# 解凍したファイルの保存
open(TXT_FILE_DIR + name, "wb").write(file.read(name))
print(TXT_FILE_DIR + lzh_file_name + " を解凍しました")
# 終了合図
print("作業を終了しました")
コラボでうまく解凍できると下図のようになります。圧縮ファイルが解凍され、指定したパスにテキストファイルが作成されています。
次の章では、テキストファイルをCSV形式に変換する手順についてご説明します。