如何修复 'For loop' 作为令牌索引不递增

How to fix 'For loop' as Token index is not increment

我正在处理 x3.py 文件并从 mon_back.py 文件调用 check_vpn() 和 connect_vpn() 函数。当我在 x3.py 中调用 check_vpn 函数时,它工作正常,但问题是当我调用 connect_vpn() 时,令牌索引 [i] 没有递增。

This is x3.py

import json
import mon_back

obj = mon_back.vpn()
obj.check_vpn()

with open('auth1.json') as json_file:  
    data = json.load(json_file)
    token = data["vpn_detail"]["tokens"]
    for i in range(len(token)):
        token1 = token[i]
        print(token[i])
        print(token1)
        i = i+1   
        obj.connect_vpn(token1)
mon_back.py
import ------
class vpn():
    vpn_bin= '/home/'

    def check_vpn(self):  
        myCmd = os.popen('ps aux | grep vpnc').read()
        for():
            if():
            return true

    def connect_vpn(self,token1):
        child = pexpect.spawn(self.vpn_bin + 'connectCiscoVpn_Banglore username', encoding='utf-8')
        child.expect('com')
        child.sendline(token1)
        h = child.expect(['authentication unsuccessful','no response from target','VPNC started in background', '[#$] '])
        if h==0 or h==1:         
            with open('auth1.json') as json_file:  
            data = json.load(json_file)
            token = data["vpn_detail"]["tokens"]
            for i in range(len(token)):
                token1 = token[i]
                i = i+1  
                self.connect_vpn(token1)                              
        elif h==2:
            print("##################   VpN Connected..   ###########")                
            sys.exit()

我每次 运行 这段代码时都会得到相同的令牌,如果身份验证不成功,那么它会增加 i = i + 1 的值,但是在重新进入 for 循环后 i 变为零。我希望 i 的值每次进入 for 循环时都会增加。

如果您 运行 x3.py 先提交文件并正确检查您的代码流,您会发现您正在休息您的令牌。

首先,您从打开文件中读取第一个标记并将其传递给 mon_back.pyconnect_vpn 方法。 然后在 mon_back.py 文件中检查 h 的值,如果条件是您再次打开同一个文件并读取令牌,以便它再次获取第一个令牌。之后你调用相同的方法 self.connect_vpn 并再次检查 h 的条件并重新打开文件,因此它再次读取第一个标记。

请检查您的代码流并更正它。

一个解决方案是,在 if 条件下,您不需要只从那里写任何东西 return 或打印消息或错误日志和 return,这样流程就可以转到 x3.py 并拿第二个令牌回到 connect_vpn 方法

更改在下面的for循环中,谢谢@pawan。我已经在两个文件中更改了这个 for 循环。

            if h==0 or h==1:               
                with open('auth1.json') as json_file:  
                    data = json.load(json_file)
                    token = data["vpn_detail"]["tokens"]
                    for i in range(0,len(token)): 
                        token1 = token[i]

在 for 循环发生变化后,它会增加令牌索引。谢谢