ファイルをさまざまな方法で読み取る方法は多数あります。
ただプレーンなopen
ファイル名を取り、それを一連の行として開きます。または、それを呼び出すだけread()
で、ファイル全体を一度に 1 つの巨大な文字列に読み取ることができます。
codecs.open
ファイル名と文字セットを受け取り、各行を自動的に Unicode にデコードします。または、これを呼び出すだけread()
で、ファイル全体を一度に読み取ってデコードし、1 つの巨大な Unicode 文字列にすることができます。
csv.reader
ファイルまたはファイルのようなオブジェクトを受け取り、それを一連の CSV 行として読み取ります。—に直接相当するものはありませんが、呼び出すだけで任意のread()
シーケンスをリストに変換できるため、行のリストが得られます (それぞれがリストです)。list
list(my_reader)
zipfile.ZipFile
ファイル名、またはファイルまたはファイルのようなオブジェクトを取り、それを ZIP アーカイブとして読み取ります。もちろん、これは行単位ではありませんが、アーカイブされたファイルごとに移動できます。または、アーカイブされたファイルを名前で検索するなど、より手の込んだことを行うこともできます。
JSON および XML ドキュメントを読み取るためのモジュール、バイナリ ファイルを処理するさまざまな方法などがあります。たとえば、XML ドキュメントを 1 つのモジュールでツリーとして検索したり、別のモジュールで要素ごとに検索したりできます。
Python にはかなり広範な標準ライブラリがあり、オンラインでドキュメントを見つけることができます。ファイルで動作できるはずのすべてのモジュールは、おそらく動作します。
また、標準ライブラリであるPyPI に付属するものを超えて、Python Package Indexには何千もの追加モジュールがあります。YAML ドキュメントを読む方法をお探しですか? PyPI を検索するyaml
と、それが見つかります。
最後に、Python を使用すると、このようなものを自分で簡単に追加できます。関数 like のスケルトンは、次のようcsv.reader
に単純です。
def reader(fileobj):
for line in fileobj:
yield parse_one_csv_line(line)
これは好きなものに置き換えることができparse_one_csv_line
、カスタム リーダーを作成できます。たとえば、これは uppercase_reader です。
def uppercase_reader(fileobj):
for line in fileobj:
yield line.upper()
実際、すべてを 1 行で書くこともできます。
shouts = (line.upper() for line in fileobj)
そして、最も良い点は、リーダーが一度に 1 行しか生成しない限り、リーダー自体がファイルのようなオブジェクトであるため、渡すことができ、問題なく動作uppercase_reader(fileobj)
することcsv.reader
です。