簡體   English   中英

如何在Shell命令行上傳遞帶引號的多行字符串?

[英]How can I pass a multi-line string with quotes on a shell command line?

我有兩個腳本,想從終端調用測試器腳本。

string s = """ output/directory/366d595b-23b2-435d-8dc6-698b3d0844b9/result.csv scores=[{
   "base_score": 0.92,
   "metric": "ACCURACY"
    }]"""

腳本1(script1.py)-由解析字符串的函數組成

    def parser_score(s):
         dict_txt = re.search('\[([^]]+)', s).group(1).strip()
         data = json.loads(dict_txt)
         return data

腳本2(script2.py)-調用腳本1並將結果保存在json文件中

    import sys
    from parser_for_score_v3 import parser_score

    s = sys.argv[1]
    print(s)

    result = parser_score(s)

    # save dict to a json file
    with open('result.json', 'w') as fp:
         json.dump(result, fp)

我從終端調用第二個腳本-

    abc $ python script2.py """output/directory/366d595b-23b2-435d-8dc6-698b3d0844b9/result.csv scores=[{
   "base_score": 0.92,
    "metric": "ACCURACY"
    }]"""

我收到一個錯誤:AttributeError:'NoneType'對象沒有屬性'group'-bash:base_score ::命令未找到

  1. 如何從終端將字符串(這么長的多行字符串)傳遞給python腳本? 文本文件不是選項。
  2. 如何修改正則表達式以讀取帶引號或不帶引號的字符串?

提前致謝。

精確的文字多行字符串

output/directory/366d595b-23b2-435d-8dc6-698b3d0844b9/result.csv scores=[{
  "base_score": 0.92,
  "metric": "ACCURACY"
}]

...只需要單引號將其傳遞到Shell命令行即可。 從而:

python script2.py 'output/directory/366d595b-23b2-435d-8dc6-698b3d0844b9/result.csv scores=[{
   "base_score": 0.92,
   "metric": "ACCURACY"
}]
'

...將在sys.argv[1]傳遞該字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM