簡體   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