Pythonのテキスト行へのランダムアクセス(linecache)
Pythonの標準ライブラリのlinecacheモジュールの目的は、任意のテキストファイルへのランダムアクセスを容易にすることですが、このモジュールは、エラートレーススタックを生成するためにPythonのトレースバックモジュールによって広く使用されています。読みのさらなるきれいなプリントがキャッシュに保持されるため、行を繰り返し読みながら時間を節約できます。
このモジュールで最も重要な関数は、指定されたファイルから指定された行番号を読み取るgetline()です。以下は機能のリストです-
getline(file、x)
この関数は、ファイルからx行目を返します。存在しない場合は、空の文字列を返します。ファイルが現在のパスに存在しない場合、関数はsys.path(モジュール検索パス)のディレクトリにファイルを配置するために連携します。
clearcache()
以前のgetline()関数のprettyprintが不要になった場合は、この関数でキャッシュをクリアできます。
checkcache()
この関数は、キャッシュが有効かどうかをチェックします。これは、キャッシュ内のファイルがディスク上で変更された可能性がある場合に役立ちます。
lazycache()
module_globalsを使用してファイル名のキャッシュをシードします。モジュールローダーは、getlinesが呼び出されたときにのみソースを要求され、すぐには要求されません。
getlines()
この関数は、ファイルからリストオブジェクトの形式で行を返します。
updatecache()
この関数は、キャッシュエントリを更新し、行のリストを返します。
ラインキャッシュ機能の使用法を示すために、最初に、有名なPythonのZen(Pythonの設計哲学に影響を与えるソフトウェアの原則のリスト)を格納するテキストファイルを作成します。 「importthis」の出力は、次のコードによってzen.txtにリダイレクトされます-
import sys, io zen = io.StringIO() old_stdout = sys.stdout sys.stdout = zen import this sys.stdout = old_stdout f=open('zen.txt','w') f.write(zen.getvalue()) f.close()
上記のコードを実行すると、現在のディレクトリにzen.txtが作成されます。このテキストファイルを使用して、getline()関数で行を読み取ります。
ファイルから4行目を読み取るには
>>> linecache.getline('zen.txt',4) 'Explicit is better than implicit.\n'
戻り文字列は改行文字で終わることに注意してください。
4から10までの行番号を表示するには、getlines()関数によって返されるリストでスライス演算子を使用します
>>> linecache.getlines('zen.txt')[4:10] ['Simple is better than complex.\n', 'Complex is better than complicated.\n', 'Flat is better than nested.\n', 'Sparse is better than dense.\n', 'Readability counts.\n', "Special cases aren't special enough to break the rules.\n"]
この記事では、Python標準ライブラリのlinecacheモジュールについて学びました。
-
Python Tkinterのaskopenfile()関数
Pythonプログラムで使用されるファイルへのパスをハードコーディングする代わりに、ユーザーがGUIを使用してosフォルダー構造を参照し、ユーザーがファイルを選択できるようにすることができます。これは、キャンバスを定義し、ファイルを参照するためのボタンを配置するtkinterモジュールを使用して実現されます。 以下のプログラムでは、ファイルオープナー関数を定義します。 Pythonはテキストファイルの内容を読み取り、非常に読みやすい方法で印刷できるため、この関数を使用してテキストファイルを開くだけです。 .txtファイルや.csvファイルなどのテキストベースのファイルを読み取ることができます
-
Pythonのissubset()関数
この記事では、Python標準ライブラリで利用可能なissubset()関数の実装と使用法について学習します。 issubset()メソッドは、セットのすべての要素が別のセットに存在する場合(引数として渡される場合)はブール値のTrueを返し、それ以外の場合はブール値のFalseを返します。 下の図では、BはAのサブセットです。AとBが同一のセットである場合、AはBの適切なサブセットであることを意味します。これは、両方のセットに同じ要素が含まれていることを意味します。 構文 <set 1>.issubset(<set 2>) 戻り値 boolean True/