1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonでファイルを(改行取り除いて)高速に読み込みたい!

Posted at

はじめに

Pythonで複数行のファイルを読み込む方法はたくさんあり,どの方法が早いのかを調べました.
(Wikipediaのタイトルを全部読み込んで色々としたい時に,気になったのでまとめました!)

TL;DR

ファイル全体を読み込んでsplitlinesする方法2が一番早い

方法たち

1,000,000行のファイルを読み込む.文字列の長さは多くても30くらい.

1. 一行ずつ読み込み,改行をreplaceする

def func1(file_path):
    lines = []
    with open(file_path, "r", encoding="utf-8") as f:
        for line in f:
            lines.append(line.replace("\n", ""))
    return lines

2. ファイル全体を読み込んでsplitlinesする

def func2(file_path):
    lines = []
    with open(file_path, "r", encoding="utf-8") as f:
        lines = f.read().splitlines()
    return lines

3. 各行をリストにして,rstripで改行を消す

def func3(file_path):
    lines = []
    with open(file_path, "r", encoding="utf-8") as f:
        for line in f.readlines():
            lines.append(line.rstrip())
    return lines

雑な予想

  • 方法1のreplaceは各行の文字列を検索する+置き換えるから一番遅そう.無駄も多い
  • 方法2は,全体読み込んで,splitlinesで改行を検索するから,方法1と同じくらい?for文使ってないから少し早いかも?
  • 方法3は,rstripで場所(末尾)を指定して取り除いてるから,一番早そう

結果

  • 方法1 : 0.513
  • 方法2 : 0.249
  • 方法3 : 0.492
    となり,圧倒的に方法2が早かった.

最後に

なぜ方法2が一番早いんだ???よくわからないです(;´・ω・)

自分用メモ

ページ内リンクは
[方法2](#2-ファイル全体を読み込んでsplitlinesする)みたいに,空白はダッシュに置換,ピリオドは無視する

1
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?