Я действительно пытаюсь понять, как передать переменные из сценария bash в функцию python, которую я создал. Я просмотрел несколько статей по одной и той же проблеме и, похоже, не понимаю, чего мне не хватает.Передать переменную функции python из сценария bash
У меня есть функция питон скрипт с именем fname_function.py:
from glob import glob
import os
import sys
first_arg=sys.argv[1]
second_arg=sys.argv[2]
third_arg=sys.argv[3]
def gFpath(reach,drive,date):
list1 = glob(os.path.normpath(os.path.join(drive, reach, date,'*')))
list2 =[]
for afolder in list1:
list2.append(glob(os.path.normpath(os.path.join(drive, reach, date, afolder, 'x_y_class?.asc'))))
return list2
if __name__=='__main__':
gFpath(first_arg,second_arg,third_arg)
И мой Баш скрипт выглядит следующим образом:
reach="R4a"
drive= "D:\\"
dte="2015_04"
fnames=$(python fname_function.py "$reach" "$drive" "$dte")
for fname in $fnames; do echo "Script returned $fname"; done
Переменные передается в сценарий Python, но я не могу показаться, чтобы получить list2
обратно в мой сценарий оболочки.
Спасибо,
Dubbbdan
'gFpath' был разработан для возврата списка путей к файлу сценария bash. Как я могу получить доступ к 'list2' из сценария оболочки? – dubbbdan
Вы можете назначить вывод переменной в bash следующим образом: 'fnames = $ (python fname_function.py" $ reach "" $ drive "" $ dte ")'. Затем вы можете перебрать их с помощью 'for fname в $ fnames; do echo "Сценарий возвратил $ fname"; done'. Это может испортиться, если в именах файлов есть пробелы, но я не могу проверить на bash прямо сейчас. – iobender
Большое спасибо за помощь! Как бы то ни было, когда я реализую предложение 'fname = ...', я получаю 'gfnames.sh: строка 4: D: \: это каталог' Я намеренно делал его каталогом, который я мог изменить, когда я работаю на разных дисках , Любые идеи о том, как передать переменную, похожую на каталог? – dubbbdan