Python 3.x 使用Python调用另一个文件中的函数

Python 3.x 使用Python调用另一个文件中的函数,python-3.x,Python 3.x,我有文件x1.py,在该类vpn()中,我有check_vpn()和connect_vpn()函数。我试图在另一个文件x2.py中调用此2函数,但get模块没有属性错误 import x1 from x1 import check_vpn from x1 import connect_vpn class vpn(): vpn_bin= '/home/' flag= False def check_vpn(self): myCmd = os.popen('ps au

我有文件x1.py,在该类vpn()中,我有check_vpn()和connect_vpn()函数。我试图在另一个文件x2.py中调用此2函数,但get模块没有属性错误

import x1

from x1 import check_vpn

from x1 import connect_vpn


class vpn():
vpn_bin= '/home/'   
flag= False

def check_vpn(self):    
    myCmd = os.popen('ps aux | grep vpnc').read()
    print(myCmd)

    for data in myCmd:
        if re.search(r'vpn.conf\b',myCmd): 
            print("Vpn connected")
            self.flag = True
            return self.flag  
            break

def connect_vpn(self,token1):  

    print("#########") 
主程序从这里开始: 我想在x2.py中输出check_vpn()和connect_vpn(),但我得到了这个

回溯(最近一次呼叫最后一次):

文件“/x2.py”,第4行,在

f1.check_vpn

AttributeError:模块“x1”没有属性“check\u vpn”

您的代码存在一些问题

  • 您还没有将vpn类中的代码打勾,在python中,方法或类下的内容必须打勾
  • 您的for-loop-in-check_-vpn在“myCmd”中获取每个“数据”,但当您搜索时,您在“myCmd”中搜索,而不是单个“数据”
  • 您没有在提供的x1.py中包含import-re和os语句,但我假设它们在代码中
  • 在return语句->之后有一个break语句,所以它永远不会到达(这不是一个主要的缺陷,但我想我应该提到它)
  • 您似乎正在将x1导入x1,但您应该将x1导入x2
  • 您还希望将类作为一个整体导入,不需要导入类中的方法
我做了一些更改来修复上述错误,但可能还有更多的错误我没有发现

x1

x2


您需要创建一个,包括完整的错误消息和工作代码。当您执行导入x1时,您是在
x2.py
中执行的,对吗?yes@GreenCloakGuy
f1.check_vpn
import os
import re

class vpn():
    vpn_bin= '/home/'   
    flag= False

    def check_vpn(self):    
        myCmd = os.popen('ps aux | grep vpnc').read()
        print(myCmd)

        for data in myCmd:
            if re.search(r'vpn.conf\b',data): 
                print("Vpn connected")
                self.flag = True
                return self.flag

    def connect_vpn(self,token1):  

        print("#########") 
from x1 import vpn
import json

obj=vpn()

obj.check_vpn()

if(obj.flag == False):
    print("###################   VpN is not connected   ########")
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)