ファイルを解凍する
この記事では、zipファイルを解凍する方法を紹介します。
【できるようになること】
・zipファイルを解凍
・解凍されたzipの中から特定のファイルを取り出す
・解凍されたzip内部の各ファイルを繰り返しで利用する
zipファイルの中身を取り出したい場合に使用します。
DecompressFile
RoboticCrowdのDecompressFileアクションを使用すると、zipファイルを解凍し、中のファイルを一覧として表示することができます。
※.zipのみ解凍できます。.rarや.7zは解凍できません(2022年10月現在)
ワークフローの設定例
例として、以下のようなワークフローを作成してみます。
「csvファイルが複数格納されたzipファイル」をダウンロードして解凍後、中の全てのcsvファイルの値を読み込む
まず最初に、総務省から「平成27年度電波の利用状況調査の調査結果」のzipファイルをダウンロードします。
以下をエディタモードから貼り付けてください。貼り付け方法はこちらになります。
# ブラウザを開く(総務省) +open_browser_1: action>: OpenBrowser url: 'https://www.tele.soumu.go.jp/j/ref/research/tool/result/27result/27band/' lang: 'ja-JP' headless: true # ダウンロードボタンをクリック +click_1: action>: Click browser: +open_browser_1 selector: ':nth-child(2) > :nth-child(3) > a' confirm: true ignoreError: true waitForDownload: true # ダウンロードファイル一覧 +get_download_files_1: action>: GetDownloadFiles order: DESC sort_by: CREATED
1.でファイルがzipファイルとしてダウンロードされているため、解凍処理を設定します。
- DecompressFileを設定します。
- 「ファイル」パラメータに、GetDownloadFileのアウトプットを指定します。
- 詳細設定を開き、「圧縮時の文字コード」パラメータからShift_JISを選択します。
zipの中の各csvファイルを読み込むために、繰り返しを設定します。
- ForEachを設定します。
- 「繰り返すリスト」パラメータに、DecompressFileのアウトプットを指定します。
- 「要素を格納する変数名」パラメータに、任意の変数名を入力します。
最後に、csvを順番に読み込みます。
- ReadCSVを設定します。
- ファイル名パラメータに、ForEachの「要素に格納する変数名」に指定した変数を、以下フォーマットで入力します。
${csv}
# ブラウザを開く(総務省) +open_browser_1: action>: OpenBrowser url: 'https://www.tele.soumu.go.jp/j/ref/research/tool/result/27result/27band/' lang: 'ja-JP' headless: true useShadowDomSelector: false private: false # ダウンロードボタンをクリック +click_1: action>: Click browser: +open_browser_1 selector: ':nth-child(2) > :nth-child(3) > a' confirm: true ignoreError: true timeout: 30000 waitForDownload: true private: false # ダウンロードファイル一覧 +get_download_files_1: action>: GetDownloadFiles order: DESC sort_by: CREATED private: false # ファイルを展開する +decompress_file_1: action>: DecompressFile file: +get_download_files_1 private: false # 各要素について繰り返す +for_each_1: for_each>: csv: +decompress_file_1 _do: # CSVを読み込む +read_c_s_v_1: action>: ReadCSV filename: ${csv} headers: true private: false
解凍したzipからファイルを取得する方法
繰り返しを使わずに、解凍したzipファイルからファイルを取り出す/フィルタリングする方法を紹介します。
この方法は、他のリスト形式のアウトプットを持つアクションに対しても有効/汎用可能です。
GetItemFromListを使用する方法です。
この方法では、リスト型アウトプット(1次元配列)から番号で指定した要素を、テキスト形式で1つだけ取り出せます。
SearchItemFromListを使用する方法です。
この方法では、リスト型アウトプット(1次元配列)から任意のテキストを含む要素を、リスト形式で複数取り出せます。
検索クエリにファイルの拡張子を指定する形での使用が便利です。
# ブラウザを開く(総務省) +open_browser_1: action>: OpenBrowser url: 'https://www.tele.soumu.go.jp/j/ref/research/tool/result/27result/27band/' lang: 'ja-JP' headless: true # ダウンロードボタンをクリック +click_1: action>: Click browser: +open_browser_1 selector: ':nth-child(2) > :nth-child(3) > a' confirm: true ignoreError: true waitForDownload: true # ダウンロードファイル一覧 +get_download_files_1: action>: GetDownloadFiles order: DESC sort_by: CREATED # ファイルを展開する +decompress_file_1: action>: DecompressFile file: +get_download_files_1 filename_encoding: Shift_JIS # リストから要素を取得 +get_item_from_list_1: action>: GetItemFromList list: +decompress_file_1 index: '0' # リスト内を検索 +search_item_from_list_1: action>: SearchItemFromList list: +decompress_file_1 query: '5GHz帯アマチュア.csv'