Передача аргументов команде оболочки

#python #bash #shell

Вопрос:

У меня есть сценарий оболочки, который я выполняю внутри скрипта python, и я хочу передать в сценарий две переменные в качестве аргументов.Я использовал знак$, но он не работает. это сценарий оболочки:

 path='/home/ranim/Documents/mmdet/media/Page_00287_jpg.rf.6a823c5ce3894f223a0e8f4ec20b11b2/article1'
save='/home/ranim/Documents/mmdet/media/Page_00287_jpg.rf.6a823c5ce3894f223a0e8f4ec20b11b2/article1/annotations.json'
call('python "/home/ranim/Documents/mmdet/mmdetection/tools/test.py" 
"/home/ranim/Documents/mmdet/models/second_model_conf.py" 
"/home/ranim/Documents/mmdet/models/second_model_checkpoint.pth" 
--cfg-options data.test.ann_file=$save 
data.test.img_prefix=$path 
--format-only 
--options "jsonfile_prefix=path"', shell=True)
 

Комментарии:

1. Я не вижу, чтобы ваш скрипт ссылался на какой-либо переданный ему параметр.

Ответ №1:

Я предполагаю, что интерполяция строк может быть использована для передачи ваших переменных Python в args call команду. Например, если вы используете fstring , код будет выглядеть следующим образом:

 path='/home/ranim/Documents/mmdet/media/Page_00287_jpg.rf.6a823c5ce3894f223a0e8f4ec20b11b2/article1'
save='/home/ranim/Documents/mmdet/media/Page_00287_jpg.rf.6a823c5ce3894f223a0e8f4ec20b11b2/article1/annotations.json'
call(f'python "/home/ranim/Documents/mmdet/mmdetection/tools/test.py" 
"/home/ranim/Documents/mmdet/models/second_model_conf.py" 
"/home/ranim/Documents/mmdet/models/second_model_checkpoint.pth" 
--cfg-options data.test.ann_file={save} 
data.test.img_prefix={path} 
--format-only 
--options "jsonfile_prefix=path"', shell=True)
 

Комментарии:

1. Пожалуйста, примите мой ответ тогда 🙂

2. Ах, извините, я впервые публикую и получаю ответ на stackoverflow xD