Передача входных параметров в скрипт из jupyter notebook

#python #jupyter-notebook

#python #jupyter-записная книжка

Вопрос:

Я пытаюсь запустить скрипт python, предоставленный файлом из записной книжки Jupyter. Скрипт запускается, если я использую следующую команду:

 !python script.py --input_path /folder/input --output_path /folder/output/
  

Но мне нужно передать эти пути из переменной моего ноутбука. Как я могу это сделать?

Пробовал это, но это не сработало:

 input = "/folder/input"
output = "/folder/output/"

!python script.py --input_path input --output_path output
  

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

1. В идеале вы должны import script вызвать его, а не использовать Jupyter для запуска команды оболочки

Ответ №1:

Значения могут быть переданы в команду оболочки с использованием {} обозначения. Смотрите эту ссылку для дополнительной обработки между командами среды выполнения Python и оболочки.

Например:

 input = "/folder/input"
output = "/folder/output/"

!echo python script.py --input_path "{input}" --output_path "{output}"
  

Выводит следующий вывод:

 python script.py --input_path "/folder/input" --output_path "/folder/output/"
  

Очевидно, echo что его можно удалить, чтобы он действительно вызывал python команду, после чего возникает исходный вопрос.

Ответ №2:

Используйте $ знак для доступа к переменным Python.

 input = "/folder/input"
output = "/folder/output/"

!python script.py --input_path $input --output_path $output
  

Ответ №3:

Можно ли использовать пакет подпроцесса? Здесь я запускаю скрипт в той же папке, что и записная книжка. Это работает хорошо.

 import subprocess
input_file = '/folder/input'
output_file = '/folder/output'
subprocess.run('python script.py --input_path {} --output_path {}'.format(input_file, output_file))