前提・実現したいこと
コマンドラインの中で以下の仕様を実装するコードが知りたいです。
1.コマンドライン引数で起動する。
2.引数はファイル名に連動する。
3.S3上にある1件ずつのcsvのファイル名をリストにしたcsvをS3にアップロードする。
4.1つにしたcsvからコマンドラインで指定したオプションパラメーターでフィルターをかけたリストをcsvにしローカル保存。
※csvを1つにする際に同じ種類のものがあったら1番新しいものを使用する。
作成するリストは「果物」と「好み」でフィルターされた指定期間のもの。
「果物」で被ってるのがあったら1番新しいものだけを表示する。
ファイル例)
S3ファイル名:
果物 好み 期間
バナナ-嫌い-20190619.csv
ミカン-好き-20190619.csv
リンゴ-好き-20190620.csv
イチゴ-好き-20190621.csv
コマンドライン例)
python test.py 果物 好み 期間始め 期間終わり
python
1import boto3 2import sys 3import csv 4 5#S3設定 6BUCKET_NAME = 'hoge' 7aws_access_key_id = 'IAMユーザーの' 8aws_secret_access_key = 'IAMユーザーの' 9 10def main(): 11#コマンドラインスタート 12 args = sys.argv 13 print(args) 14 print("果物 :" + args[1]) 15 print("好み :" + args[2]) 16 print("期間初め:" + args[3]) 17 print("期間終了:" + args[4]) 18 19 20#S3からcsvをダウンロード ファイル名を取得してリストにする為不要と思われる。 21s3 = boto3.resource('s3') 22bucket = s3.Bucket(BUCKET_NAME) 23bucket.download_file('') 24 25#S3にあるcsvを1つにしてcsvを作る(既にある場合は上書き) 26 27#作ったcsvをS3にアップロード 28s3 = boto3.resource('s3') 29bucket = s3.Bucket(BUCKET_NAME) 30bucket.upload_file('s3all.csv') 31 32#コマンドライン引数で指定したオプションでフィルターしリストのcsvを作る。 33 34#作ったcsvをローカルに保存 35f = open('list.csv', 'ab') 36 37if __name__ == '__main__': 38 main()