Python 3.x 使用Python调用另一个文件中的函数
我有文件x1.py,在该类vpn()中,我有check_vpn()和connect_vpn()函数。我试图在另一个文件x2.py中调用此2函数,但get模块没有属性错误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
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.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)