日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

利用Python腳本實現(xiàn)傳遞參數(shù)的三種方式分享_python

作者:Mrwhite86 ? 更新時間: 2023-01-01 編程語言

背景:使用python腳本傳遞參數(shù)在實際工作過程中還是比較常用,以下提供了好幾種的實現(xiàn)方式:

一、使用sys.argv的數(shù)組傳入

說明:使用sys.argv必須按照先后的順序傳入對應的參數(shù);sys.argv則封裝了傳入的參數(shù)數(shù)據(jù),作為數(shù)組的方式已經(jīng)傳入

import sys

print("傳入?yún)?shù)的總長度為:", len(sys.argv))
print("type:", type(sys.argv))
print("function name:", sys.argv[0])
try:
    print("第一個傳入的參數(shù)為:", sys.argv[1])
    print("第二個傳入的參數(shù)為:", sys.argv[2])
except Exception as e:
    print("Input Error:", e)

通過命令行查看運行結果:

二、使用argparse包傳入

說明:parser.add_argument 方法的type參數(shù)理論上可以是任何合法的類型,而且傳入的順序并沒有要求

參數(shù)使用的說明:

  • --xx ?完整參數(shù)輸入
  • -x ? ?簡寫參數(shù)輸入
  • type ?輸入的參數(shù)將要被轉換的數(shù)據(jù)類型
  • default 默認值
  • help ? 參數(shù)介紹
  • nargs ?可傳入的參數(shù)數(shù)量
  • required ?是否為必須參數(shù)
import argparse
parser = argparse.ArgumentParser(description='argparse testing')
parser.add_argument('--name','-n',type=str, default = "bk",required=True,help="a programmer's name")
parser.add_argument('--age','-a',type=int, default=35,help='age of the programmer')
parser.add_argument('--sex','-s',type=str, default='male')
parser.add_argument('--favorite','-f',type=str, nargs="+",required=False,help="favorite of the programmer")

args = parser.parse_args()
print(args.name)
print(args.age)
print(args.sex)
print(args.favorite)

查看運行結果:

1.使用完整參數(shù)輸入

2.使用簡寫參數(shù)輸入

3.多參數(shù)的傳入

三、使用shell腳本的方式向python腳本傳遞參數(shù)

1.使用shell腳本向python腳本傳遞參數(shù)

python腳本依然使用sys.argv的數(shù)組的方式傳入?yún)?shù)

原python如下:(python_test.py)

import sys

print("傳入?yún)?shù)的總長度為:", len(sys.argv))
print("type:", type(sys.argv))
print("function name:", sys.argv[0])
try:
    print("第一個傳入的參數(shù)為:", sys.argv[1])
    print("第二個傳入的參數(shù)為:", sys.argv[2])
except Exception as e:
    print("Input Error:", e)

增加shell腳本如下:(shell_test.sh)

#!/bin/bash
#定義變量
para1=$1
para2=$2
python python_test.py $para1 $para2

查看運行結果:

2.使用shell腳本向python腳本內(nèi)的方法傳遞參數(shù)

python腳本如下:(python_test.py)

def fun1():
    return "無參數(shù)方法fun1"

def fun2(x):
    return f"有參數(shù)方法fun2且傳入的參數(shù)為{x}"

shell腳本如下:(shell_test.sh)

(1)無參數(shù)方式調(diào)用:

#!/bin/bash
#定義變量
python -c 'import python_test;print(python_test.fun1())'

查看運行結果:

(2)有參數(shù)方式調(diào)用

#!/bin/bash
#定義變量
para=$1
python -c "import python_test;print(python_test.fun2('${para}'))"

查看運行結果:

?(3)一次調(diào)用所有方法,放入一個集合中,再調(diào)用切割方法獲取相應的值

#!/bin/bash
#定義變量
para=$1
#將結果保存為一個變量ALL_RESULTS內(nèi)
ALL_RESULTS=$(python -c "import python_test;print(python_test.fun1(),python_test.fun2('${para}'))")
#分別打印第一個方法的返回與第二個方法的返回
RESULTS_fun1=$(echo $ALL_RESULTS | cut -d' ' -f1)
RESULTS_fun2=$(echo $ALL_RESULTS | cut -d' ' -f2)
echo fun1方法的返回結果為:$RESULTS_fun1
echo fun2方法的返回結果為:$RESULTS_fun2

查看運行結果:

原文鏈接:https://www.cnblogs.com/mrwhite2020/p/16812198.html

欄目分類
最近更新