次のようにフォーマットされたタイトルとパスワードのファイルがあります。
<title> <password>
...
ファイルを検索して、Python2.7でタイトルが付けられたパスワードを返す必要があります。これを行うための最良の方法は何ですか?私はファイルを扱うのが初めてなので、このタスクのためにファイルをフォーマットするより良い方法がある場合は、代わりにその答えを自由に作ってください。
次のようにフォーマットされたタイトルとパスワードのファイルがあります。
<title> <password>
...
ファイルを検索して、Python2.7でタイトルが付けられたパスワードを返す必要があります。これを行うための最良の方法は何ですか?私はファイルを扱うのが初めてなので、このタスクのためにファイルをフォーマットするより良い方法がある場合は、代わりにその答えを自由に作ってください。
ファイルが非常に大きくなる可能性があり、すべてをRAMにロードする手間を省きたい場合は、各行をループして、必要なタイトル値を確認できます。このアプローチのパフォーマンスは、スキャンが一致するラインを通過する速度に完全に依存します。
ファイルが適切なサイズであり、メモリに読み込むことができる場合は、ファイルの使用pickle
またはjson
保存を検討し、ファイルをとしてシリアル化することをお勧めしますdict
。そうすれば、ファイルを読み込んで、すぐにタイトルをキーとして引き出すことができます。
Pythonshelve
モジュールは、辞書のように機能し、基になるデータベースファイルへのシリアル化を処理する高レベルのオブジェクトも提供します。基本的には永続的な辞書です。これはおそらく効率とパフォーマンスの最良のバランスになるでしょう。
キーはタイトルであり、値はパスワードであるため、通常のdictを使用することもshelveを使用することも、文字列の解析がないことを意味します。
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()