简体   繁体   中英

Pass input parameters to script from jupyter notebook

I am trying to run a python script provided by a file from a Jupyter notebook. The script is running if I use the following command:

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

But I need to pass those paths from a variable of my notebook. How can I do it?

Tried this but it didn't work:

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

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

Values can be passed through to the shell command using the {} notation. See this link for additional handling between the Python runtime and shell commands.

For example:

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

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

Prints the following output:

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

Obviously, the echo can be removed to make it actually invoke the python command, which is what the original question is after.

Would it be OK to use the subprocess package? Here I am running a script in the same folder as the notebook. It works well.

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

Use the $ sign to access Python variables.

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM