程序不继续读取文本文件
Program doesn't continue reading text file
我要读取数据表格文件a_flag
所以我在这里有功能
def get_answer():
print("Creating r_flag data... ", end="")
r_flag = Flag(open("request.flg", "r+"))
print("Done")
print("Creating a_flag data... ", end="")
a_flag = Flag(open("answer.flg", "r+"))
print("Done")
print("Creating b_flag data... ", end="")
b_flag = Flag(open("busy.flg", "r+"))
print("Done")
# Wait until ready
print("Getting b_flag data... ", end="")
b_flag.get_data()
while b_flag.buffer[1] == 3:
b_flag.get_data()
print("Done")
# Request data
print("Set r_flag to REQUESTED... ", end="")
r_flag.set_stat([0, 0, 0, 0, 0, 0, 0, 0])
print("Done")
print("Now enter looping... ", end="")
while True:
print("Done")
print(" Getting a_flag data... ")
a_flag.get_data()
print(" got --> " + a_flag.buffer)
print(" Getting r_flag data... ")
r_flag.get_data()
print(" got --> " + r_flag.buffer)
if a_flag.is_answered() and r_flag.buffer:
print("Set r_flag to ACQUIRED... ", end="")
r_flag.set_stat([0, 2, 0, 0, 0, 0, 0, 0])
print("Done")
buffer = a_flag.buffer
del r_flag
del a_flag
del b_flag
print("Returning buffer")
return buffer
这是它的输出
Got a request: stat
Creating r_flag data... Done
Creating a_flag data... Done
Creating b_flag data... Done
Getting b_flag data... Done
Set r_flag to REQUESTED... Done
Now enter looping... Done
Getting a_flag data...
如您所见,它不处理 pass a_flag.get_data(),其定义如下
class Flag():
def __init__(self, f):
self.flag_f = f
def __del__(self):
self.flag_f.close()
def get_data(self):
self.rewind()
self.buffer = self.flag_f.readline().split()
return self.buffer
def set_stat(self, data):
self.rewind()
for i in range(0, 8):
self.flag_f.write("{0} ".format(data[i], end=""))
def rewind(self):
self.flag_f.seek(0)
我完全不知道问题出在哪里(请注意,它使用相同的函数正确地从 b_flag 中获取了数据)
answer.flg
0 1 0 0 0 0 0 0
busy.flg
1 4 0 0 0 0 0 0
request.flg
0 0 0 0 0 0 0 0
请耐心等待我的代码
如果我 运行 你的代码,我得到以下错误,它立即揭示了问题:
TypeError Traceback (most recent call last)
<ipython-input-22-85d0a94e893a> in <module>
----> 1 get_answer()
<ipython-input-7-753bd9beab41> in get_answer()
26 print(" Getting a_flag data... ")
27 a_flag.get_data()
---> 28 print(" got --> " + a_flag.buffer)
29 print(" Getting r_flag data... ")
30 r_flag.get_data()
TypeError: must be str, not list
将语句更改为例如print(" got --> " + str(a_flag.buffer))
会处理这个问题,即使它不是唯一一个有代码的人:稍后你必须对 r_flag
做同样的事情,即使那样,你也会 运行 进入您在 Flag
上使用 is_answered
的问题,该问题不存在。
我要读取数据表格文件a_flag 所以我在这里有功能
def get_answer():
print("Creating r_flag data... ", end="")
r_flag = Flag(open("request.flg", "r+"))
print("Done")
print("Creating a_flag data... ", end="")
a_flag = Flag(open("answer.flg", "r+"))
print("Done")
print("Creating b_flag data... ", end="")
b_flag = Flag(open("busy.flg", "r+"))
print("Done")
# Wait until ready
print("Getting b_flag data... ", end="")
b_flag.get_data()
while b_flag.buffer[1] == 3:
b_flag.get_data()
print("Done")
# Request data
print("Set r_flag to REQUESTED... ", end="")
r_flag.set_stat([0, 0, 0, 0, 0, 0, 0, 0])
print("Done")
print("Now enter looping... ", end="")
while True:
print("Done")
print(" Getting a_flag data... ")
a_flag.get_data()
print(" got --> " + a_flag.buffer)
print(" Getting r_flag data... ")
r_flag.get_data()
print(" got --> " + r_flag.buffer)
if a_flag.is_answered() and r_flag.buffer:
print("Set r_flag to ACQUIRED... ", end="")
r_flag.set_stat([0, 2, 0, 0, 0, 0, 0, 0])
print("Done")
buffer = a_flag.buffer
del r_flag
del a_flag
del b_flag
print("Returning buffer")
return buffer
这是它的输出
Got a request: stat
Creating r_flag data... Done
Creating a_flag data... Done
Creating b_flag data... Done
Getting b_flag data... Done
Set r_flag to REQUESTED... Done
Now enter looping... Done
Getting a_flag data...
如您所见,它不处理 pass a_flag.get_data(),其定义如下
class Flag():
def __init__(self, f):
self.flag_f = f
def __del__(self):
self.flag_f.close()
def get_data(self):
self.rewind()
self.buffer = self.flag_f.readline().split()
return self.buffer
def set_stat(self, data):
self.rewind()
for i in range(0, 8):
self.flag_f.write("{0} ".format(data[i], end=""))
def rewind(self):
self.flag_f.seek(0)
我完全不知道问题出在哪里(请注意,它使用相同的函数正确地从 b_flag 中获取了数据)
answer.flg
0 1 0 0 0 0 0 0
busy.flg
1 4 0 0 0 0 0 0
request.flg
0 0 0 0 0 0 0 0
请耐心等待我的代码
如果我 运行 你的代码,我得到以下错误,它立即揭示了问题:
TypeError Traceback (most recent call last)
<ipython-input-22-85d0a94e893a> in <module>
----> 1 get_answer()
<ipython-input-7-753bd9beab41> in get_answer()
26 print(" Getting a_flag data... ")
27 a_flag.get_data()
---> 28 print(" got --> " + a_flag.buffer)
29 print(" Getting r_flag data... ")
30 r_flag.get_data()
TypeError: must be str, not list
将语句更改为例如print(" got --> " + str(a_flag.buffer))
会处理这个问题,即使它不是唯一一个有代码的人:稍后你必须对 r_flag
做同样的事情,即使那样,你也会 运行 进入您在 Flag
上使用 is_answered
的问题,该问题不存在。