Я работаю с высокопроизводительным компьютером, где пишу bash-скрипт, который выполняет мою python_script.py
работу следующим образом:
#!/bin/bash -l
#$ -l h_rt=0:00:10
#$ -l mem=1G
#$ -cwd
module load python3/3.8
python3 python_script.py
В моем python_script.py
я определяю повторение переменных и каталог следующим образом:
repeat = 10
directory = r'User/somedir/'
Я хотел бы иметь возможность установить эти переменные в моем скрипте bash, чтобы они перезаписывали эти значения в python_script.py
и использовались вместо них.
Из ограниченной информации в вашем вопросе я бы согласился с моим первым предложением: передать необходимые переменные в качестве аргументов вашему сценарию. Погрузитесь в модуль argparse
, чтобы сделать это проще (и безопаснее) для вашего скрипта.
Pendatic nitpick: в вашем имени пользователя отсутствует вспомогательный глагол.
Два способа: 1. Аргумент командной строки. 2. Переменная среды.
Отвечает ли это на ваш вопрос? Как читать/обрабатывать аргументы командной строки?
@MisterMiyagi Да, до сих пор не мог найти это.
@ 9769953, увы, максимальное количество символов ограничено, отзывы будут рассмотрены.
Я думаю, они должны были взять хоббитов в Бри, это подошло бы.
Более простой способ - использовать в вашем скрипте Python:
import sys
repeat = sys.argv[1]
directory = sys.argv[2]
и в вашем сценарии bash
repeat = "10"
directory = "User/somedir/"
python3 python_script.py $repeat $directory
Для тех, кто еще пытается это сделать: я обнаружил, что все происходит в виде строки (даже если используется repeat=10 вместо repeat='10'), поэтому просто пришлось исправить с помощью repeat_int = int(repeat) в скрипте python, а затем использовать repeat_int оттуда на
Передайте переменные в качестве аргументов вашему сценарию. Или установите их как переменные среды в вашем сценарии bash, а затем используйте
os.environ
в своем сценарии Python.