【发布时间】:2022-01-24 20:13:31
【问题描述】:
我正在为实验室质量控制系统编写一个文件系统,其中数百台不同的机器正在发送需要在一个中心位置收集的信息。每条消息的格式可能不同,新的格式随时可能推出。
规格:
-
用 Python 编写
-
一个记录文件: 可变字段数 可变长度字段 变量类型字段(字符串、整数、浮点数)
-
返回一个列表: 其中第一个元素是记录类型(或 ID) 后跟每个字段
我想提高读取(获取)过程的速度
def Get():
L =[]
try:
nos = ord(f.read(1)) # read no of fields
except:
return [] # end of record
for i in range(nos):
try:
x = f.read(1) # read field lengt
y = f.read(ord(x)) # read field
try:
L.append(int(y)) # apend ifinteger
except:
try:
L.append(float(y)) # append if float
except:
L.append(y) # append if string
except:
pass
return L
#----------------------------------------------------
def Put(*x):
f.write(chr(len(x))) # write no of fields
for i in range(len(x)): # for each field
y = str(x[i]) # get field length
f.write(chr(len(y))) # write field length
f.write(y) # write field
#----------------------------------------------------
f = open('x', 'w')
Put(1,'aaaaaaaa', 1, -1, 1.1, -1.1)
Put(2,'bbbbbbbbbbbbbb', 2, -2, 2.2, -2.2, 'abc', 12)
f.close()
#----------------------------------------------------
f = open('x', 'r')
while True:
LL = Get()
if LL != []:
print(LL)
for i in range(len(LL)):
print(type(LL[i]))
else:
break
f.close()
【问题讨论】:
-
保存头发的一个经验法则:不要使用裸露的
try/except在except子句中指定您可以处理的例外情况。 -
核心问题是你的文件格式读写效率非常低(即耗时)。您是否仅限于使用这种格式?