2017-03-14 3 views
0

ロギングメッセージの一部を変数に入れて、それをPythonのbashスクリプトで使用するにはどうすればよいですか?Pythonの変数にメッセージを記録する部分を取得する

if new_file is not None and new_file.get('status', '') != "FAIL": 
    message = "Storage service created {}: {}".format(sip_type, new_file) 
    logging.info(message) 
    print(message) 
    sys.exit(0) 

以下のコードは、次の出力を生成します:私は実行するために、変数に 'current_full_path' を取得する必要があります

Storage service created SIP: {'size': 113509, 'status': 'UPLOADED', 'origin_path': 'currentlyProcessing/teshhdhl88gekkjjgkg29-ccdf0a5b-4eda-4948-99fa-c5947082fa41/teshhdhl88gekkjjgkg29-ccdf0a5b-4eda-4948-99fa-c5947082fa41.7z', 'origin_pipeline': '/api/v2/pipeline/053ec0d5-6510-4b0c-a5ef-2949a2f53e9a/', 'uuid': 'ccdf0a5b-4eda-4948-99fa-c5947082fa41', 'related_package_uuid': None, 'current_path': 'ccdf/0a5b/4eda/4948/99fa/c594/7082/fa41/teshhdhl88gekkjjgkg29-ccdf0a5b-4eda-4948-99fa-c5947082fa41.7z', 'origin_location': '/api/v2/location/8bfed394-bb74-4442-b33c-f0766862daa9/', 'misc_attributes': {}, 'current_full_path': '/var/archivematica/sharedDirectory/www/AIPsStore/ccdf/0a5b/4eda/4948/99fa/c594/7082/fa41/teshhdhl88gekkjjgkg29-ccdf0a5b-4eda-4948-99fa-c5947082fa41.7z', 'current_location': '/api/v2/location/587ecb7a-fb95-4076-a5bc-d80528e0d19f/', 'related_packages': [], 'resource_uri': '/api/v2/file/ccdf0a5b-4eda-4948-99fa-c5947082fa41/', 'package_type': 'AIP'} 

dropbox ='/bkpdir' 
bashCommand = "bash /home/charles/Dropbox-Uploader/dropbox_uploader.sh upload /VARIABLE WOULD BE HERE " + dropbox 
os.system(bashCommand) 

答えて

1

をここでは、取得する方法ですmessage変数current_full_path

import ast 

if new_file is not None and new_file.get('status', '') != "FAIL": 
    message = "Storage service created {}: {}".format(sip_type, new_file) 
    logging.info(message) 
    print(message) 

    current_full_path = ast.literal_eval(message.split("SIP: ")[1])['current_full_path'] 

    print current_full_path 
    #/var/archivematica/sharedDirectory/www/AIPsStore/ccdf/0a5b/4eda/4948/99fa/c594/7082/fa41/teshhdhl88gekkjjgkg29-ccdf0a5b-4eda-4948-99fa-c5947082fa41.7z 

    sys.exit(0) 

if文が機能している場合returncurrent_full_pathに覚えておいてください。

dropbox ='/bkpdir' 
bashCommand = "bash/home/charles/Dropbox-Uploader/dropbox_uploader.sh upload" + current_full_path + dropbox 

print bashCommand 
#bash/home/charles/Dropbox-Uploader/dropbox_uploader.sh upload/var/archivematica/sharedDirectory/www/AIPsStore/ccdf/0a5b/4eda/4948/99fa/c594/7082/fa41/teshhdhl88gekkjjgkg29-ccdf0a5b-4eda-4948-99fa-c5947082fa41.7z/bkpdir 

os.system(bashCommand) 
+0

あなたは '置き換えることができます。

は、使用、bashCommandcurrent_full_pathを取得するには、 "SIP:"' sip_type + 'で ":"' 'sip_type'は常にSIP' – Khristos

+0

'と等しくない場合によく働く。今すぐアップロードした直後に、current_full_pathをbashCommand = "bash /home/charles/Dropbox-Uploader/dropbox_uploader.sh upload"に出力する方法を教えてください。 –

+0

私はこれをlocalaip = str(current_full_path)としました print(localaip)とそれはうまく印刷されますが、私はbashcommandにそれを追加できません –

関連する問題