python howto打开课程,读取文件并打开另一个课程

时间:2018-08-16 07:00:00

标签: python

我要打开一个类,从该类中的txt文件中读取信息,然后再打开另一个类。 我收到未定义全局名称“自我”的错误。

fileName = "tv.info"
info = 0

class FileHandling:
def __init__(self, session):
    self.ReadFile()
    session.open(InfoScreen)

def ReadFile(self):
    global info
    if os.path.exists(fileName):
        info = 1
        f = open(fileName, "r")
        for line in f:
            if line.strip():                        # if line is not an empty line
                ...
                ...
                ...
    f.close()
    list = [channel, freq, tp, pol, symbfreq, fec]
    for i in list:
        if ('\n' in i):
           i = i.replace("\n","")                  # strip linebreak
    self['channel'] = Label(_(channel))
    self['freq'] = Label(_(freq))
    self['tp'] = Label(_(tp))
    self['pol'] = Label(_(pol))
    self['symbfreq'] = Label(_(symbfreq))
    self['fec'] = Label(_(fec))

class InfoScreen(Screen):
   if info == 1:
       ...
       ...

def main(session,**kwargs):
    self.session.open(FileHandling)

1 个答案:

答案 0 :(得分:0)

@matineau:我试图发布我拥有的代码,但是从这里得到一个消息,该帖子主要由代码组成。我将在下面再次尝试:

from Screens.Screen import Screen
from Components.Label import Label
import os

fileName = "tv.info"
info = 0

class FileHandling:
    def __init__(self, session):
        self.ReadFile()
        session.open(InfoScreen)

    def ReadFile(self):
        global info
        if os.path.exists(fileName):
            info = 1
            f = open(fileName, "r")
            for line in f:
                if line.strip():                        # if line is not an empty line
                    if "channel" in line:
                        channel = line.split(": ")[-1]     # split line at ":"
                    if "freq" in line:
                        freq = line.split(": ")[-1]
                    if "tp" in line:
                        tp = line.split(": ")[-1]
                    if "pol" in line:
                        pol = line.split(": ")[-1]
                    if "symbfreq" in line:
                        symbfreq = line.split(": ")[-1]
                    if "fec" in line:
                        fec = line.split(": ")[-1]
            f.close()
            list = [channel, freq, tp, pol, symbfreq, fec]
            for i in list:
                if ('\n' in i):                             # strip linebreak
                    i = i.replace("\n","")
            self['channel'] = Label(_(channel))
            self['freq'] = Label(_(freq))
            self['tp'] = Label(_(tp))
            self['pol'] = Label(_(pol))
            self['symbfreq'] = Label(_(symbfreq))
            self['fec'] = Label(_(fec))

class InfoScreen(Screen):
    if info == 1:
        skin = """
        <screen size="700,455" title=" ">
        <eLabel text="[ CHANNELINFO ]" position="center,10"  size="900,55"/>
        <eLabel position="20,60" size="1160,4" />
        <eLabel text="Sender: " position="20,90" size="300,55" />
        <eLabel text="Frequency: " position="20,150" size="300,55"  />
        <eLabel text="Transponder: " position="20,210" size="300,55" />
        <eLabel text="Polarisation: " position="20,270" ize="300,55" />
        <eLabel text="Symbol freq.: " position="20,330" size="300,55" />
        <eLabel text="FEC: " position="20,390" size="300,55" />
        <widget name="channel" position="260,90" size="300,55" />
        <widget name="freq" position="260,150" size="300,55" />
        <widget name="tp" position="260,210" size="300,55" />
        <widget name="pol" position="260,270" size="300,55" />
        <widget name="symbfreq" position="330,270" size="300,55" />
        <widget name="fec" position="260,390" size="300,55" />
        </screen>"""
    else:
        skin = """
        <screen size="700,60" title=" ">
        <eLabel text="file tv.info not found !" position="center,0"  size="700,60" />
        </screen>"""

def __init__(self, session):
    Screen.__init__(self, session)
    self.session = session 

def main(session,**kwargs):
    self.session.open(FileHandling)
相关问题