繁体   English   中英

从bash脚本将变量传递给python函数

[英]Pass variable to python function from bash script

我真的很努力尝试找出将变量从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脚本。

谢谢,

杜布丹

您可以直接运行Python文件,例如python fname_function.py "$reach" "$drive" "$dte"

但是,在这种情况下, sys.argv[0]将为fname_function.py ,因此您需要将first_arg设置为sys.argv[1]并同时增加其他数字。

另外,您不会在Python脚本中输出任何内容。 您应该将脚本结尾读为:

if __name__=='__main__':
    fnames = gFpath(first_arg,second_arg,third_arg)
    for fname in fnames:
        print(fname)

它将在每行上从gFpath打印出1个结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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