我想在另一个模块中调用一个函数,但我总是得到相同的错误语句“module'mat_import'没有属性'matread'”。
从GUI获取“filename”和“button_pressed”值后,我想在mat_import中调用matread。结果应该是我在main.py中可以访问filename1和button_pressed。
main.py:
编辑:要获取“filename1”和“button_pressed”,将调用GUI.py中的函数gui。这可以工作并将文件名返回到main.py.之后我想在mat_import中调用matread。函数matread应该从main.py获取文件名并读取文件。输出是两个变量“signals”和“signaldata”。
import mat_import as mi
import GUI
filename1, button_pressed = GUI.gui()
if (button_pressed ==1):
signals, signaldata = mi.matread
mat_import.py:
import h5py
import numpy as np
import csv
import os
import main
filename1 = ""
global matread
def matread():
#get signals and signaldata
return signals, signaldata
答案 0 :(得分:0)
正如我的评论中所提到的,我对您的问题描述和问题中的缩进的最佳猜测是matread()是在mat_import.py文件中的另一个函数中定义的。为了从main.py中调用matread,你需要1.将它定义为全局,然后执行它定义的函数。或者,你可以在任何其他函数之外定义matread(),就像我在matread2中所做的那样下面。您可以在此处详细了解变量范围:https://matthew-brett.github.io/teaching/global_scope.html
mat_import.py:
def matread2():
return "b"
def outer_func():
global matread
def matread(): return "a"
main.py:
import mat_import as mi
try:
mi.matread()
except AttributeError as e:
print(e)
mi.outer_func()
print mi.matread()
print mi.matread2()