gpt4 book ai didi

python - 如何指定除第 0 个参数之外的 python 参数

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:25 25 4
gpt4 key购买 nike

如果你用参数调用 python,即

python script.ps arg1, arg2, arg2

sys.argv[0]是script.ps,脚本的名称

如何引用并保存 python 脚本中除第 0 个参数之外的所有参数的值。

这是我的脚本

import sys, subprocess, socket, string
import wmi, win32api, win32con

for args in [item.strip('sender-ip=') for item in sys.argv[1:]]:

userIP = args
userloggedon = ""

# perform system lookup of IP address
userIP = "\\\\" + userIP

pst = subprocess.Popen(
["D:\pstools\psloggedon.exe", "-l", "-x", userIP],
stdout = subprocess.PIPE,
stderr = subprocess.PIPE
)

out, error = pst.communicate()

userLoggedOn = out.split('\n')[1].strip()
print 'userId={}'.format(userLoggedOn)

如果我 sender-ip 是唯一的参数,则该脚本可以完美运行,即

python script.ps sender-ip=10.10.10.10

但是如果我调用它

python script.ps email=joe@gmail.com, sender-ip=10.10.10.10

python script.ps email=joe@gmail.com sender-ip=10.10.10.10

python script.ps "email=joe@gmail.com, sender-ip=10.10.10.10"

你明白了......

它不起作用,因为它无法从 sender-ip 中提取 IP 地址。

我期望的输出是

userId=DOMAIN\username

相反,我得到了

userId=

userId=
userId=DOMAIN\username

最佳答案

argparse 可以在这种情况下帮助您,并且它是一个非常有用的工具。

这是一个带有多个参数的 argparse 示例:

parser = argparse.ArgumentParser(description='Description of your program')
parser.add_argument('-f','--foo', help='Description for foo argument', required=True)
parser.add_argument('-b','--bar', help='Description for bar argument', required=True)
args = vars(parser.parse_args())

args 将是包含参数的字典:

if args['foo'] == 'Hello':
pass # replace with code

if args['bar'] == 'World':
pass # replace with code

另请查看此处以获取更多信息:

编辑: 对于位置参数(例如 pos_arg=value),请使用:

parser.add_argument('pos_arg', nargs='+', help='Description for positional argument')

关于python - 如何指定除第 0 个参数之外的 python 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24246009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com