#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))