我真的很努力想要将变量从bash脚本传递给我已经创建的python函数。我查看过有关同一问题的大量帖子,似乎无法理解我所缺少的内容。
我有一个名为fname_function.py的python函数脚本:
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)
我的bash脚本看起来像:
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
返回到我的shell脚本。
谢谢,
Dubbbdan
答案 0 :(得分:3)
您可以直接运行Python文件,例如python fname_function.py "$reach" "$drive" "$dte"
但是,在这种情况下,sys.argv[0]
将为fname_function.py
,因此您需要将first_arg
设置为sys.argv[1]
并增加其他数字。< / p>
此外,您不会在Python脚本中输出任何内容。您应该阅读脚本的结尾:
if __name__=='__main__':
fnames = gFpath(first_arg,second_arg,third_arg)
for fname in fnames:
print(fname)
将在每行打印出来自gFpath
的1个结果。