benten download_file
目的
- 単一ファイルダウンロードを行います。
Warning
事前にログイン認証を行う必要があります。
Warning
システム負荷軽減のため、一度に2GB以上のファイルをダウンロードすることは禁止しています。
概要
- 単一ファイルをダウンロードします。
- ダウンロードできるファイルは認証時のアカウントでアクセスが許可されたファイルのみ対象となります。
- ダウンロード後はハッシュのチェックを行い、データに矛盾がないことを確認します。
利用例
- Help
$ benten.py download_file -h usage: benten download_file [-h] [--out_directory [OUT_DIRECTORY]] [--flag_path] [--flag_subdirectory] [--disable_hash] file positional arguments: file file for download optional arguments: -h, --help show this help message and exit --out_directory [OUT_DIRECTORY], -d [OUT_DIRECTORY] directory for output file if the file is available --flag_path, -p download file with path --flag_subdirectory, -s download file with subdirectory --disable_hash disable hash check in downloaded file
- 単一ファイルをダウンロード
$ benten.py download_file /SPring-8/BL14B2/data2/temp/Cu-K_Cu-foil_Si111_50ms_120613/README.csv ### benten download_file ### [Repository::authorize] access_token = 579773811dc7401ea1307c99d2a88a82 ==> downloaded with file = README.csv ==> check consitency with hash = 04fc584126773205d6b9d18e49cd90f0
- 単一ファイルをダウンロード (path情報込み)
$ benten.py download_file -p /SPring-8/BL14B2/data2/temp/Cu-K_Cu-foil_Si111_50ms_120613/README.csv ### benten download_file ### [Repository::authorize] access_token = 579773811dc7401ea1307c99d2a88a82 ==> downloaded with file = ./SPring-8/BL14B2/data2/temp/Cu-K_Cu-foil_Si111_50ms_120613/README.csv ==> check consitency with hash = 04fc584126773205d6b9d18e49cd90f0
- 単一ファイルをダウンロード (subdirectory情報込み(登録名ディレクトリ以下))
$ benten.py download_file -s /SPring-8/BL14B2/data2/temp/Cu-K_Cu-foil_Si111_50ms_120613/README.csv ### benten download_file ### [Repository::authorize] access_token = 579773811dc7401ea1307c99d2a88a82 ==> downloaded with file = Cu-K_Cu-foil_Si111_50ms_120613/README.csv ==> check consitency with hash = 04fc584126773205d6b9d18e49cd90f0
Pythonモジュールとの対応
- benten_client.rest_download.File (postの方) を利用
- 利用例 (example/benten_download_file.pyから)
#!/usr/bin/env python ''' example: download_file usage: python benten_download_file.py ... ''' import benten_client import time import argparse from logging import getLogger, StreamHandler, DEBUG logger = getLogger(__name__) handler = StreamHandler() handler.setLevel(DEBUG) logger.setLevel(DEBUG) logger.addHandler(handler) logger.propagate = False # ... parameters parser = argparse.ArgumentParser(description="example: download_file") parser.add_argument("file", help="file for download") parser.add_argument("--out_directory", "-d", nargs="?", help="directory for output file if the file is available") parser.add_argument("--flag_path", "-p", action="store_const", const=1, help="download file with path") parser.add_argument("--flag_subdirectory", "-s", action="store_const", const=1, help="download file with subdirectory") parser.add_argument("--disable_hash", action="store_const", const=1, help="disable hash check in downloaded file") args = parser.parse_args() file = args.file out_directory = args.out_directory flag_path = args.flag_path flag_subdirectory = args.flag_subdirectory disable_hash = args.disable_hash repo = benten_client.Repository() logger.debug("# set access token") repo.authorize(benten_client.access_token()) logger.debug("# download_file") v = {} v["file"] = file ret_dict = repo.download.file.post( v,out_directory=out_directory, flag_path=flag_path, flag_subdirectory=flag_subdirectory, disable_hash=disable_hash) if ret_dict is not None: benten_client.log("==> response") benten_client.out_json(ret_dict)