テキストファイルの先頭行と最終行を取得する最も効率的な方法は何ですか?
2023-11-08 23:15:30
質問
私は、各行にタイムスタンプを含むテキストファイルを持っています。私の目標は、時間範囲を見つけることです。すべての時間は、最初の行が最も早い時間になり、最後の行が最も遅い時間になるように、順番に並んでいます。必要なのは、一番最初の行と一番最後の行だけです。pythonでこれらの行を取得する最も効率的な方法は何ですか?
注:これらのファイルは長さが比較的大きく、それぞれ約1~2百万行で、私は数百のファイルについてこれをしなければなりません。
どのように解決するのですか?
with open(fname, 'rb') as fh:
first = next(fh).decode()
fh.seek(-1024, 2)
last = fh.readlines()[-1].decode()
ここでの変数の値は1024です:これは平均的な文字列の長さを表します。例として1024を選びました。もし平均的な線の長さの見積もりがあれば、その値×2を使えばよいでしょう。
行の長さの上限について何もわからないので、明らかな解決策は、ファイルをループすることです。
for line in fh:
pass
last = line
バイナリフラグをわざわざ指定する必要はなく、単に
open(fname)
.
ETA
: 作業するファイルが多いので、数十ファイル分のサンプルを
random.sample
を使って数十個のファイルのサンプルを作成し、それらに対してこのコードを実行して最終行の長さを決定することができます。位置のずれを先験的に大きな値 (たとえば 1 MB) で指定します。これは、完全な実行のための値を推定するのに役立ちます。
関連
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] オブジェクト名の前のシングルアンダーコアとダブルアンダーコアの意味は何ですか?
-
[解決済み] ファイルに行を書き込む正しい方法?
-
[解決済み] Pythonで大きなファイルの行数を安価に取得する方法は?
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] Pythonでホームディレクトリを取得するための正しいクロスプラットフォームな方法は何ですか?
-
[解決済み] 40 億の整数以外の整数を生成する。
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] Python 2.7サポート終了?
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] if 節の終了方法
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
Python ファイルの行を読むときに最初の数行をスキップする