Вызов функции в другом модуле - PullRequest
0 голосов
/ 04 июня 2018

Я хочу вызвать функцию внутри другого модуля, но я всегда получаю одно и то же сообщение об ошибке "модуль 'mat_import' не имеет атрибута 'matread'".

После получения "filename" и "button_pressedmsgstr "значение из графического интерфейса, которое я хочу назвать matread внутри mat_import.Результатом должно быть то, что у меня есть filename1 и button_pressed, доступные внутри main.py.

main.py:

EDIT: чтобы получить "filename1" и "button_pressed "вызывается функция gui внутри GUI.py.Это работает и возвращает имя файла в main.py.После этого я хочу вызвать matread внутри mat_import.Функция matread должна получить имя файла из main.py и прочитать файл.Выходными данными являются две переменные «сигналы» и «данные сигнала».

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

1 Ответ

0 голосов
/ 04 июня 2018

Как уже упоминалось в моем комментарии, мое лучшее предположение из вашего описания проблемы и отступа в вашем вопросе состоит в том, что matread () определен в другой функции в файле mat_import.py.Чтобы сделать вызов Matread из main.py, вам необходимо: 1. определить его как глобальный и 2. выполнить функцию, в которой он определен. В качестве альтернативы вы можете определить matread () вне любой другой функции, как я это сделал с matread2ниже.Подробнее о области видимости переменной можно прочитать здесь: https://matthew -brett.github.io / training / 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...