成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

python調(diào)用python腳本時參數(shù)的傳遞

yankeys / 1976人閱讀

摘要:前言為什么有調(diào)用腳本呢直接不就行了嗎這里主要是用于遠(yuǎn)程調(diào)用時這種調(diào)用在運(yùn)維場景中是比較多的,類似下面這樣的調(diào)用遠(yuǎn)程調(diào)用這里有個問題就是傳遞較多參數(shù)時如何傳遞比如傳遞字典傳遞列表等我們可以發(fā)現(xiàn),如果直接傳遞,往往傳過去后不能很好的解析因?yàn)檫@

前言:

為什么有python調(diào)用python腳本呢?直接import不就行了嗎?
這里主要是用于遠(yuǎn)程調(diào)用時,這種調(diào)用在運(yùn)維場景中是比較多的,類似下面這樣的調(diào)用

   server.py  遠(yuǎn)程調(diào)用->   agent.py

這里有個問題,就是傳遞較多參數(shù)時,如何傳遞,比如傳遞字典,傳遞列表等,
我們可以發(fā)現(xiàn),如果直接傳遞,往往傳過去后不能很好的解析,因?yàn)檫@樣直接調(diào)用,
agent.py在使用sys.argv解析時,獲得的是列表,列表里面是字符串

如何解決?

解決方法就是將要傳遞的參數(shù)拆解成字符串,以特殊字符隔開,agen.py解析時候,再拆解回來

實(shí)例

1、server.py

#-*- coding:utf8 -*- 
import paramiko
script_path = "/data/test"

# 需要傳遞的參數(shù)
arg_a = 1000           #數(shù)字
arg_b = "anymore"      #字符串
arg_c = ["192.168.0.1","192.168.0.2","192.168.0.3"] #列表
arg_d = {"a":"5","b":"10","c":"11"}   #字典

# 將數(shù)字變?yōu)樽址?arg_a = str(arg_a)

# 拆解列表arg_c
arg_c_str = ",".join(arg_c)

# 拆解字典arg_d
arg_d_list = []
for k,v in arg_d.items():
    tmp_str = "%s:%s"%(k,v)
    arg_d_list.append(tmp_str)
arg_d_str = ",".join(arg_d_list)

# 組合傳遞參數(shù)
args = "{0}|{1}|{2}|{3}".format(
    arg_a,
    arg_b,
    arg_c_str,
    arg_d_str
)
# 這里輸出的內(nèi)容為:
#1000|anymore|192.168.0.1,192.168.0.2,192.168.0.3|a:5,c:11,b:10
print args


command = "python {0}/a.py "{1}"".format(
    script_path,
    args
)
s = paramiko.SSHClient()
s.load_system_host_keys()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect("ssh host", "ssh port", "ssh user", "ssh password", timeout=15)
stdin,stdout,stderr = s.exec_command(command)
stdout,stderr = stdout.read(),stderr.read()
    
print stdout, stderr

# 遠(yuǎn)程調(diào)用一般使用paramiko,這里使用commands演示
status, result = commands.getstatusoutput(command)

2、agent.py

#-*- coding:utf8 -*-

import sys

args = sys.argv[1]
args_list = args.split("|")

# 處理數(shù)字參數(shù)
arg_a = int(args_list[0])

# 處理字符串參數(shù)
arg_b = str(args_list[1])

# 處理列表參數(shù)
arg_c_list = args_list[2].split(",")

# 處理字典參數(shù)
arg_d_list = args_list[3].split(",")
arg_d_dic = {}
for i in arg_d_list:
    tmp = i.split(":")
    arg_d_dic[tmp[0]] = tmp[1]

print arg_a
print arg_b
print arg_c_list
print arg_d_dic

執(zhí)行結(jié)果:

結(jié)語

如果有更好的方式,麻煩留言,這樣在傳遞參數(shù)的過程中少了很多解析工作.當(dāng)然這里僅作為在運(yùn)維編寫腳本時候常用到,也不失為一種學(xué)習(xí)字符串拆解的實(shí)際例子

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44420.html

相關(guān)文章

  • Python和SQL Server 2017強(qiáng)大功能

    摘要:它主要是為了允許在中使用基于的機(jī)器學(xué)習(xí),但是它可以與任何庫或框架一起使用。已經(jīng)通過啟用服務(wù)器通過使用的機(jī)器學(xué)習(xí)服務(wù)在中執(zhí)行腳本,添加到其高級分析擴(kuò)展,現(xiàn)在稱為機(jī)器學(xué)習(xí)服務(wù)。存儲的實(shí)例必須安裝具有的機(jī)器學(xué)習(xí)服務(wù)要在中使用執(zhí)行腳本,應(yīng)運(yùn)行或。 Python和SQL Server 2017的強(qiáng)大功能 Python是SQL Server 2017的新功能。它主要是為了允許在SQLServer中...

    everfight 評論0 收藏0
  • 100 個基本 Python 面試問題第二部分(21-40)

    摘要:為我們提供了許多內(nèi)置函數(shù),例如并提供了創(chuàng)建用戶定義函數(shù)的能力。會將該變量視為函數(shù)級作用域中的局部變量?;氐侥夸浿泻瘮?shù)的用途是什么是中的內(nèi)置函數(shù)之一。請注意,這種類型的參數(shù)語法不允許將命名參數(shù)傳遞給函數(shù)。函數(shù)接受一個稱為的可選參數(shù)。 ...

    2450184176 評論0 收藏0
  • python模塊之sys

    摘要:返回的信息特定于當(dāng)前線程以及當(dāng)前堆棧幀。出于某些原因,這個值可能無法計(jì)算,將返回返回安卓版本的構(gòu)建時間,以整數(shù)表示。僅適用于安卓平臺返回解釋器的檢查間隔??刹僮鞔藢傩詫?shí)現(xiàn)強(qiáng)制重新加載模塊等。 sys模塊提供對由解釋器使用或維護(hù)的某些變量、與解釋器交互的函數(shù)的訪問接口。 sys.abiflags 在使用標(biāo)準(zhǔn)configure腳本構(gòu)建python的POSIX系統(tǒng)上,該屬性包含了PEP 31...

    csRyan 評論0 收藏0
  • Python-爬蟲工程師-面試總結(jié)

    摘要:內(nèi)存池機(jī)制提供了對內(nèi)存的垃圾收集機(jī)制,但是它將不用的內(nèi)存放到內(nèi)存池而不是返回給操作系統(tǒng)。為了加速的執(zhí)行效率,引入了一個內(nèi)存池機(jī)制,用于管理對小塊內(nèi)存的申請和釋放。 注:答案一般在網(wǎng)上都能夠找到。1.對if __name__ == main的理解陳述2.python是如何進(jìn)行內(nèi)存管理的?3.請寫出一段Python代碼實(shí)現(xiàn)刪除一個list里面的重復(fù)元素4.Python里面如何拷貝一個對象?...

    antz 評論0 收藏0
  • Blender Python API概述

    摘要:在交互式控制臺中運(yùn)行此操作時,您將看到視口更新。鍵入或粘貼到交互式控制臺中。用戶首選項(xiàng)加載項(xiàng)列表使用顯示有關(guān)每個加載項(xiàng)的信息。最后兩行僅用于測試這允許腳本直接在文本編輯器中運(yùn)行以測試更改。 Blender Python API概述 本文檔的目的是解釋Python和Blender如何組合在一起,涵蓋了一些在閱讀API參考和示例腳本時可能不明顯的功能。 Python in Blender ...

    魏憲會 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<