我有一个标题和密码的文件格式如下:
<title> <password>
...
我需要在python 2.7中搜索文件并返回给出标题的密码。做这个的最好方式是什么?我是处理文件的新手,所以如果有更好的方法来格式化这个任务的文件,可以自由地做出答案。
答案 0 :(得分:2)
如果您的文件非常大并且想要将其全部加载到ram中,则可以循环遍历每一行,检查所需的标题值。这种方法的性能完全取决于扫描在匹配线上的速度。
如果您的文件大小合理且可以读入内存,则可以考虑使用pickle
或json
来存储文件,并将其序列化为dict
。这样你就可以在文件中读取并立即将标题拉出来作为密钥。
python shelve
模块还为您提供了一个更高级别的对象,它将像字典一样工作,并为您处理基础数据库文件的序列化。它基本上是一个持久的字典。这可能是效率和性能的最佳平衡。
使用普通字典或使用搁置意味着没有字符串解析,因为密钥是您的标题,值是您的密码。
答案 1 :(得分:2)
def find_pass(fname,target_title):
with open(fname) as f:
for ln in f:
# some test to see if this is the line you want
if ln.startswith(target_title):
return ln[len(target_title):].strip()