如何运行Python脚本的某些部分?

时间:2019-04-01 18:14:30

标签: python python-3.x

我编写了一个脚本,能够运行其中包含的所有进程,但是我只想运行所需的进程。

我认为我正在尝试使用与过去不同的列表用途,但是我不确定如何去做。

我有四个函数:foo1,foo2,foo3和foo4。我希望能够使用用户使用input()函数插入的特定数字来有选择地在python脚本本身中运行任何这些函数。可以在下面看到代码示例。

ListAllVSs = requests.get('https://' + LMIP + '/access/listvs', verify=False, auth=MyCreds)

ListVSOutput = ListAllVSs.content.splitlines()

for Line in ListVSOutput:
    if b"<Index>" in Line:
        IndexLines.append(Line)

NumbersList = [int(re.search(br"\d+", Integer).group()) for Integer in IndexLines]

for Number in NumbersList:
    VSIDAndValue = (
    ('vs', str(Number)),
    )
    requests.get('https://' + LMIP + '/access/delvs', params=VSIDAndValue, verify=False, auth=MyCreds)

因此,这并不完全与单个函数相关。

例如,用户应输入“ 1”运行foo1,“ 2”运行foo2,“ 3”运行foo3,“ 4”运行foo4,“ 5”运行foo1和foo2,等等。所有可能的功能组合,总共将有15个可能的输入,任何数字(小于0或大于15)都应视为无效。

我想使用“ 0”来运行所有四个进程,由于Python如何为其列表位置编号,我认为这是可能的,但是如果需要的话,我可以将其设置为“ 15”。

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用按位运算符来测试进程的不同组合:

def foo1():
    print("foo1()")

def foo2():
    print("foo2()")

def foo3():
    print("foo3()")

def foo4():
    print("foo4()")

def input(n):
    if n & (1 << 0) != 0: # (1 << 0) == 1
        foo1()
    if n & (1 << 1) != 0: # (1 << 1) == 2
        foo2()
    if n & (1 << 2) != 0: # (1 << 2) == 4
        foo3()
    if n & (1 << 3) != 0: # (1 << 3) == 8
        foo4()

在此示例中,从1到15的所有数字都会给出一些输出。 1将打印“ foo1()” 4将打印“ foo3()” ... 如果要打印“ foo1()”和“ foo3()”,则应使用参数5(1 + 4)调用input()

了解这一点的关键是要注意,每个函数fooX都以2为基数调用以下数字:

n = 1 10 = 0001 2 -> foo1()
n = 2 10 = 0010 2 -> foo2()
n = 4 10 = 0100 2 -> foo3()
n = 8 10 = 1000 2 -> foo4()

和它们的总和只是对位应用的布尔or|)操作:

(1 + 4) 10 = 0001 2 | 0100 2 = 0101 2 = 5 10

然后,您使用&(按位and)运算符比较给定的位是否设置为1,并调用相应的fooX()

答案 1 :(得分:1)

使用词典,对不起,我无法评论您的问题,我太新了。

"*alarm*:*job.heartbeat*"

如果您不明白这一点,可以给我一些示例代码吗?如果您想限制输入内容,也要赞扬此人 Limiting user input to a range in Python