Pythonで、sshで接続した先にある、テキストファイルを読み込んで、中身を書き換え、「JSON形式の文字列にしたい」と考えております。
※コードはAWSのlambdaに取り込んで動作させたいと考えております。
※sshで接続した先にあるファイルを読み込んで表示することはできています。
具体的には、test.txtの中身が
a
100
b
200
300
となっているものを、2,4,5行目の数字だけ取り出し、
{"数字1": 100, "数字2": 200, "数字3": 300}
という形に成形したいです。
エラーとしては以下の通りです。
Syntax error in module 'lambda_function': invalid syntax
実際のコードは以下の通りになります。
python
1import paramiko 2import boto3 3import datetime 4import os 5 6print('Loading testdata lambda function') 7today = datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9))).strftime('%Y%m%d') 8#now = datetime.datetime.now() 9yesterday = (datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9))) - datetime.timedelta(days=1)).strftime('%Y%m%d') 10 11def lambda_handler(event, context): 12 13 #接続先情報の設定 14 client = paramiko.SSHClient() 15 client.set_missing_host_key_policy(paramiko.WarningPolicy()) 16 user = os.environ['ID'] 17 passwd = os.environ['PASS'] 18 ip = os.environ['IP'] 19 client.connect(ip,port=22,username=user,password=passwd) 20 21 #接続先サーバー実行コマンド 22 stdin, stdout, stderr = client.exec_command('cat /home/tmp/test.txt') 23 24 # アップロードファイルの内容格納 25 lines = stdout.read() 26 file_contents = '{"数字1": ' + lines[2] + ', "数字2": ' + lines[4] + ', "数字3": ' + lines[5]}' 27 print(file_contents) 28 file_contents = file_contents.replace('\n','') 29 print(file_contents) 30 client.close() 31 bucket = os.environ['BUCKET'] 32 33 #取得ファイルの保存 34 key = 'Testdata/' + 'json/' + today + '/' +'testdata_' + yesterday + '.json' 35 print(key) 36 s3 = boto3.resource('s3') 37 obj = s3.Object(bucket,key) 38 obj.put(Body=file_contents) 39 return 40``` 41 42 43 44ご教授のほどよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー