python - python 如何打开类,读取文件并打开另一个类
问题描述
我想打开一个类,从该类中的 txt 文件中读取信息,然后再打开另一个类。我收到一个错误,即未定义全局名称“self”。
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)
解决方案
@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)
推荐阅读
- javascript - 我如何在反应js中将数字从输入转换为int
- html - url 路径指向目录时的 HTML 相对表单操作
- flutter - 我无法为 MyFirebaseMessagingService 编写代码,所有的文字都是白色的,我在 android studio
- html - Angular - src(未知)图像
- c++ - 分段错误(核心转储)c ++ linux终端windows 10
- android - Android Kotlin:从彩信中检索发件人的地址或电话号码抛出错误/不起作用
- typescript - 在 TypeScript 中将 .gql 文件解析为 DocumentNode
- pug - 十一和哈巴狗:通过循环哈巴狗博客文章创建博客列表
- ios - iOS 13/14 模态视图控制器解雇检测
- javascript - 添加数组值