我用python来做一个简单的信息检索程序,它获取一个clientID和一个用户的客户机id是txt文件中每一行的前5个字符
RYMAU
ELOWE
RUKUM
KLKID
LAJON
我想让一个用户输入一个5个字母的id,并检查每一行中的一个特定的客户机id,此时我已经想到了这个:
^{pr2}$但这只检查第一行的前5个字母,而不是全部。在
文本文件的实际外观如下:
NeQua,High,Running,5,Swimming,40,Aerobics,40,Football,20,Tennis,10
ImKol,Moderate,Walking,40,Hiking,0,Cleaning,40,Skateboarding,30,Basketball,20
YoTri,Moderate,Walking,20,Hiking,30,Cleaning,40,Skateboarding,20,Basketball,40
RoDen,High,Running,20,Swimming,20,Aerobics,40,Football,30,Tennis,50
NaThe,Moderate,Walking,30,Hiking,30,Cleaning,20,Skateboarding,10,Basketball,30
ReWes,Moderate,Walking,30,Hiking,20,Cleaning,50,Skateboarding,40,Basketball,20
BrFre,High,Running,20,Swimming,30,Aerobics,30,Football,30,Tennis,20
KaDat,High,Running,30,Swimming,20,Aerobics,10,Football,20,Tennis,30
ViRil,High,Running,50,Swimming,50,Aerobics,60,Football,40,Tennis,50
TrGeo,High,Running,10,Swimming,20,Aerobics,30,Football,30,Tennis,20
DaWay,High,Running,60,Swimming,50,Aerobics,40,Football,50,Tennis,50
CaAma,High,Running,30,Swimming,20,Aerobics,10,Football,20,Tennis,30
ArRes,High,Running,0,Swimming,10,Aerobics,30,Football,20,Tennis,20
BeVic,High,Running,20,Swimming,20,Aerobics,30,Football,30,Tennis,10
MaFre,High,Running,10,Swimming,20,Aerobics,20,Football,40,Tennis,30
AnMer,Moderate,Walking,40,Hiking,30,Cleaning,30,Skateboarding,20,Basketball,30
SaBro,Moderate,Walking,30,Hiking,20,Cleaning,30,Skateboarding,20,Basketball,20
PoLig,Moderate,Walking,20,Hiking,20,Cleaning,20,Skateboarding,30,Basketball,30
HeZbe,Moderate,Walking,30,Hiking,40,Cleaning,20,Skateboarding,40,Basketball,10
GiLop,Moderate,Walking,40,Hiking,0,Cleaning,30,Skateboarding,40,Basketball,20
DeTur,Moderate,Walking,10,Hiking,0,Cleaning,10,Skateboarding,30,Basketball,30
LaKin,Moderate,Walking,20,Hiking,20,Cleaning,30,Skateboarding,30,Basketball,20
AnVen,Moderate,Walking,50,Hiking,0,Cleaning,50,Skateboarding,50,Basketball,20
LoLew,Moderate,Walking,10,Hiking,20,Cleaning,10,Skateboarding,30,Basketball,40
NyRed,Moderate,Walking,0,Hiking,0,Cleaning,0,Skateboarding,0,Basketball,20
您需要阅读所有行,并测试每行的前五个字符:
如果文件中有任何一行以提供的前缀开头,则},并且一旦发现命中,它将立即停止检查行。在
allowed_access
将为{注意:为了避免作弊,您可能需要验证所提供的
clientID
实际上有五个字符长。在如果要获取与该ID关联的行,而不仅仅是该ID是否存在,可以将该检查修改为:
^{pr2}$另外,如果您经常执行这个测试,并且记录文件很少更改,那么您可能需要在内存中缓存以减少I/O工作。您将预先加载一次有效的ID(而不是在任何验证用户的循环或事件处理程序中):
然后,每次登录测试简化为:
它将立即运行(出于所有意图和目的),而不是在每次测试中重新打开和重新读取文件的代价。您可能需要一个过时超时,之后每隔一段时间重新缓存
known_users
,或者os.stat
文件,如果文件被修改,则重新缓存。在获取关联行的版本是:
检查/查找:
相关问题 更多 >
编程相关推荐