web-dev-qa-db-ja.com

ファイルを1行ずつリストに読み込む方法は?

Pythonでファイルのすべての行を読み取り、各行をリストの要素として格納する方法を教えてください。

ファイルを1行ずつ読み取り、リストの末尾に各行を追加します。

2014
Julie Raswick
with open(fname) as f:
    content = f.readlines()
# you may also want to remove whitespace characters like `\n` at the end of each line
content = [x.strip() for x in content] 
1883
SilentGhost

入力と出力 :を参照してください。

with open('filename') as f:
    lines = f.readlines()

または改行文字を取り除きます。

lines = [line.rstrip('\n') for line in open('filename')]

編集者注:Janus Troelsenのコメントが暗示しているように、この回答の最初の空白削除コマンドline.strip()は、末尾の\nだけでなく、 すべての先頭と末尾の 空白を削除します。

849
Felix Kling

これは必要以上に明白ですが、あなたが望むことをします。

with open("file.txt", "r") as ins:
    array = []
    for line in ins:
        array.append(line)
469
robert

これにより、ファイルから行の「配列」が生成されます。

lines = Tuple(open(filename, 'r'))
236
Noctis Skytower

\nを含めたい場合は、

with open(fname) as f:
    content = f.readlines()

\nを含めたくない場合は、

with open(fname) as f:
    content = f.read().splitlines()
165
Eneko Alonso

提案されているように、あなたは単に以下をすることができます:

with open('/your/path/file') as f:
    my_lines = f.readlines()

このアプローチには2つの欠点があります。

1)すべての行をメモリに保存します。一般的な場合、これは非常に悪い考えです。ファイルが非常に大きくなる可能性があり、メモリ不足になる可能性があります。それが大きくなくても、それは単なるメモリの浪費です。

2)あなたがそれらを読むようにこれは各行の処理を許しません。したがって、この後に行を処理すると、効率が悪くなります(1回ではなく2回のパスが必要です)。

一般的なケースのためのより良いアプローチは以下の通りです:

with open('/your/path/file') as f:
    for line in f:
        process(line)

プロセス関数を任意の方法で定義する場所。例えば:

def process(line):
    if 'save the world' in line.lower():
         superman.save_the_world()

Supermanクラスの実装はあなたのための課題として残されています)。

これはどんなファイルサイズでもうまく機能し、あなたはたった1パスであなたのファイルを通過します。これは一般的に一般的なパーサがどのように動作するかです。

121
DevShark

あなたがファイルを閉じることを気にしないのなら、このワンライナーはうまくいきます:

lines = open('file.txt').readlines()

伝統的な way:

fp = open('file.txt') # Open file on read mode
lines = fp.read().split("\n") # Create a list containing all lines
fp.close() # Close file

withreadlines() の使用(推奨)

with open('file.txt') as fp:
    lines = fp.readlines()
97
Pedro Lobito

リストにデータ

次のようなデータを含むテキストファイルがあるとします。

テキストファイルの内容

line 1
line 2
line 3
  • 同じディレクトリでcmdを開きます(マウスを右クリックしてcmdまたはPowerShellを選択します)。
  • pythonを実行し、インタプリタで次のように書きます。

Pythonスクリプト

>>> with open("myfile.txt", encoding="utf-8") as file:
...     x = [l.strip() for l in file]
>>> x
['line 1','line 2','line 3']

Appendを使う

x = []
with open("myfile.txt") as file:
    for l in file:
        x.append(l.strip())

それとも….

>>> x = open("myfile.txt").read().splitlines()
>>> x
['line 1', 'line 2', 'line 3']

それとも….

>>> x = open("myfile.txt").readlines()
>>> x
['linea 1\n', 'line 2\n', 'line 3\n']

それとも….

>>> y = [x.rstrip() for x in open("my_file.txt")]
>>> y
['line 1','line 2','line 3']


with open('testodiprova.txt', 'r', encoding='utf-8') as file:
    file = file.read().splitlines()
  print(file)

with open('testodiprova.txt', 'r', encoding='utf-8') as file:
  file = file.readlines()
  print(file)
53
Giovanni Gianni

これはopenコマンドをカプセル化するはずです。 

array = []
with open("file.txt", "r") as f:
  for line in f:
    array.append(line)
45
cevaris

ファイルをリストに読み込むには、次の3つのことを行う必要があります。

  • ファイルを開く
  • ファイルを読む
  • 内容をリストとして保存する

幸いなことにPythonはこれらのことを非常に簡単にするので、ファイルをリストに読み込む最短の方法は次のとおりです。

lst = list(open(filename))

ただし、さらに説明を追加します。

ファイルを開く

特定のファイルを開きたいが、ファイルハンドル(またはファイルのようなハンドル)を直接扱わないと仮定します。 Pythonでファイルを開くために最も一般的に使用される関数は open であり、Python 2.7では1つの必須引数と2つのオプション引数を取ります。

  • ファイル名
  • モード
  • バッファリング(この回答ではこの引数を無視します)

ファイル名は、ファイルへのパスを表す文字列にする必要があります。例えば:

open('afile')   # opens the file named afile in the current working directory
open('adir/afile')            # relative path (relative to the current working directory)
open('C:/users/aname/afile')  # absolute path (windows)
open('/usr/local/afile')      # absolute path (linux)

ファイル拡張子を指定する必要があることに注意してください。これは、Windowsユーザーにとって特に重要です。なぜなら、.txt.docなどのファイル拡張子は隠されていますデフォルトエクスプローラーで表示されるとき。

2番目の引数はmodeで、デフォルトでは「読み取り専用」を意味するrです。それはまさにあなたの場合に必要なものです。

ただし、実際にファイルを作成したり、ファイルに書き込みたい場合は、ここで別の引数が必要になります。 概要が必要な場合は優れた答えがあります

ファイルを読み込むには、modeを省略するか、明示的に渡すことができます。

open(filename)
open(filename, 'r')

どちらもファイルを読み取り専用モードで開きます。 Windowsでバイナリファイルを読み込む場合は、モードrbを使用する必要があります。

open(filename, 'rb')

他のプラットフォームでは、'b'(バイナリモード)は単に無視されます。


ファイルをopenする方法を示したので、それをもう一度closeする必要があるという事実について話しましょう。そうでない場合、プロセスが終了するまで(またはPythonがファイルハンドルをガベージするまで)ファイルへの開いているファイルハンドルを保持します。

あなたが使用できる間:

f = open(filename)
# ... do stuff with f
f.close()

opencloseの間の何かが例外をスローすると、ファイルを閉じることができません。 tryfinallyを使用することで、これを回避できます。

f = open(filename)
# nothing in between!
try:
    # do stuff with f
finally:
    f.close()

ただし、Pythonは、よりきれいな構文を持つコンテキストマネージャーを提供します(ただし、openの場合、上記のtryおよびfinallyとほぼ同じです)。

with open(filename) as f:
    # do stuff with f
# The file is always closed after the with-scope ends.

最後のアプローチは、Pythonでファイルを開くためのrecommendedアプローチです!

ファイルを読む

さて、あなたはファイルを開きました、今それをどのように読みますか?

open関数は file オブジェクトを返し、Pythonの反復プロトコルをサポートします。反復ごとに次の行が表示されます。

with open(filename) as f:
    for line in f:
        print(line)

これにより、ファイルの各行が印刷されます。ただし、各行には末尾に改行文字\nが含まれることに注意してください(Pythonが ユニバーサル改行サポート で構築されているかどうかを確認することをお勧めします。 Windowsでは\r\n、Macでは\rも改行として使用します)。必要ない場合は、最後の文字(またはWindowsでは最後の2文字)を削除するだけで済みます。

with open(filename) as f:
    for line in f:
        print(line[:-1])

ただし、最後の行には必ずしも末尾の改行が含まれているとは限らないため、使用しないでください。末尾の改行で終了しているかどうかを確認し、終了している場合は削除できます。

with open(filename) as f:
    for line in f:
        if line.endswith('\n'):
            line = line[:-1]
        print(line)

ただし、文字列の終わりからすべての空白(\n文字を含む)を削除するだけで、他のすべての末尾空白も削除されるため、これらが重要な場合は注意してください:

with open(filename) as f:
    for line in f:
        print(f.rstrip())

ただし、行が\r\n(Windowsの「改行」)で終わる場合、.rstrip()\rを処理します!

内容をリストとして保存する

ファイルを開いて読み取る方法がわかったので、リストにコンテンツを保存します。最も簡単なオプションは、 list 関数を使用することです。

with open(filename) as f:
    lst = list(f)

末尾の改行を削除する場合は、代わりにリストの内包表記を使用できます。

with open(filename) as f:
    lst = [line.rstrip() for line in f]

またはもっと簡単:fileオブジェクトの .readlines() メソッドは、デフォルトで行のlistを返します:

with open(filename) as f:
    lst = f.readlines()

これには、末尾の改行文字も含まれます。不要な場合は、[line.rstrip() for line in f]アプローチをお勧めします。これは、メモリ内のすべての行を含む2つのリストを保持しないためです。

目的の出力を取得するための追加オプションがありますが、それはむしろ「準最適」です。 read 文字列内の完全なファイルで、改行で分割されます。

with open(filename) as f:
    lst = f.read().split('\n')

または:

with open(filename) as f:
    lst = f.read().splitlines()

split文字が含まれていないため、これらは末尾の改行を自動的に処理します。ただし、ファイルを文字列およびメモリ内の行のリストとして保持するため、これらは理想的ではありません!

概要

  • ファイルを開くときはwith open(...) as fを使用してください。ファイルを自分で閉じる必要はなく、何らかの例外が発生してもファイルを閉じるためです。
  • fileオブジェクトは反復プロトコルをサポートしているため、ファイルを1行ずつ読み取るのはfor line in the_file_object:と同じくらい簡単です。
  • 使用可能な関数/クラスについては、常にドキュメントを参照してください。ほとんどの場合、タスクに完全に一致するか、少なくとも1つまたは2つの良いものがあります。この場合の明らかな選択はreadlines()ですが、リストに保存する前に行を処理する場合は、単純なリストの理解をお勧めします。
40
MSeifert

ファイルの行をリストに読み込むためのクリーンでPythonicな方法


まず第一に、あなたはあなたのファイルを開きそして効率的でPythonicな方法でその内容を読むことに集中するべきです。これは私が個人的に好まない方法の例です:

infile = open('my_file.txt', 'r')  # Open the file for reading.

data = infile.read()  # Read the contents of the file.

infile.close()  # Close the file since we're done using it.

代わりに、は非常にきれいで、一度使用し終えたらファイルを閉じるための余分な手順を必要としないため、読み取りと書き込みの両方でファイルを開くための以下の方法をお勧めします。以下のステートメントでは、ファイルを読み取り用に開き、それを変数 'infile'に代入しています。このステートメント内のコードが実行を終了すると、ファイルは自動的に閉じられます。

# Open the file for reading.
with open('my_file.txt', 'r') as infile:

    data = infile.read()  # Read the contents of the file into memory.

今度は、このデータを Python List にまとめることに集中する必要があります。なぜなら、それらは反復可能、効率的、そして柔軟なためです。あなたの場合、望ましい目標はテキストファイルの各行を別々の要素にすることです。これを達成するために、次のように splitlines() メソッドを使用します。

# Return a list of the lines, breaking at line boundaries.
my_list = data.splitlines()

最終製品:

# Open the file for reading.
with open('my_file.txt', 'r') as infile:

    data = infile.read()  # Read the contents of the file into memory.

# Return a list of the lines, breaking at line boundaries.
my_list = data.splitlines()

コードのテスト:

  • テキストファイルの内容
     A fost odatã ca-n povesti,
     A fost ca niciodatã,
     Din rude mãri împãrãtesti,
     O prea frumoasã fatã.
  • テスト目的の印刷ステートメント
    print my_list  # Print the list.

    # Print each line in the list.
    for line in my_list:
        print line

    # Print the fourth element in this list.
    print my_list[3]
  • 出力(Unicode文字のため見栄えが異なる):
     ['A fost odat\xc3\xa3 ca-n povesti,', 'A fost ca niciodat\xc3\xa3,',
     'Din rude m\xc3\xa3ri \xc3\xaemp\xc3\xa3r\xc3\xa3testi,', 'O prea
     frumoas\xc3\xa3 fat\xc3\xa3.']

     A fost odatã ca-n povesti, A fost ca niciodatã, Din rude mãri
     împãrãtesti, O prea frumoasã fatã.

     O prea frumoasã fatã.
38
Johnny

私はこうしたいのですが。

lines = []
with open("myfile.txt") as f:
    for line in f:
        lines.append(line)
29
user3394040

ファイルにリスト内包表記を使用することによるもう1つのオプションがあります。

lines = [line.rstrip() for line in open('file.txt')]

ほとんどの作業はPythonインタプリタの内部で行われるため、これはより効率的な方法です。

24
user1833244

別のオプションは numpy.genfromtxt です、例えば:

import numpy as np
data = np.genfromtxt("yourfile.dat",delimiter="\n")

これはdataをあなたのファイルにあるのと同じ数の行を持つNumPy配列にします。

23
atomh33ls

コマンドラインまたは標準入力からファイルを読みたい場合は、fileinputモジュールも使用できます。

# reader.py
import fileinput

content = []
for line in fileinput.input():
    content.append(line.strip())

fileinput.close()

ファイルを次のように渡します。

$ python reader.py textfile.txt 

ここでもっと読んでください: http://docs.python.org/2/library/fileinput.html

21
oliland

最も簡単な方法

簡単な方法は:

  1. ファイル全体を文字列として読み込む
  2. 1行ずつ文字列を分割する

一行で言えば、

lines = open('C:/path/file.txt').read().splitlines()
17

Python 2とPython 3でテキストファイルを読み書きする。 Unicodeで動作します

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Define data
lines = ['     A first string  ',
         'A Unicode sample: €',
         'German: äöüß']

# Write text file
with open('file.txt', 'w') as fp:
    fp.write('\n'.join(lines))

# Read text file
with open('file.txt', 'r') as fp:
    read_lines = fp.readlines()
    read_lines = [line.rstrip('\n') for line in read_lines]

print(lines == read_lines)

気をつけるべきこと:

  • withはいわゆる コンテキストマネージャ です。開かれたファイルが再び閉じられることを確認します。
  • 単に.strip()または.rstrip()を作成するここでのすべての解決策は、空白も削除するのでlinesを再現できません。

一般的なファイルの終わり

.txt

より高度なファイルの書き込み/読み取り

アプリケーションにとっては、次のことが重要です。

  • 他のプログラミング言語によるサポート
  • 読み書きパフォーマンス
  • コンパクト(ファイルサイズ)

参照:データ直列化フォーマットの比較

設定ファイルを作る方法を探しているのであれば、私の短い記事Pythonの設定ファイルを読んでください。

17
Martin Thoma

Python 3.4で導入された pathlib は、ファイルからテキストを読み込むのに非常に便利な方法です。

from pathlib import Path
p = Path('my_text_file')
lines = p.read_text().splitlines()

splitlines呼び出しは、ファイルの内容全体を含む文字列からファイル内の行のリストに変換するものです)。

pathlibには便利な機能がたくさんあります。 read_text は素晴らしく簡潔で、ファイルの開閉について心配する必要はありません。ファイルを処理するために必要なことがすべて一度にすべて読み取られるのであれば、それは良い選択です。

16
LangeHaare
f = open("your_file.txt",'r')
out = f.readlines() # will append in the list out

今すぐ変数outはあなたが欲しいもののリスト(配列)です。どちらでもできます。

for line in out:
    print line

または

for line in f:
    print line

あなたは同じ結果を得るでしょう。

15
moldovean

Splitlines()関数を使うだけです。これが一例です。

inp = "file.txt"
data = open(inp)
dat = data.read()
lst = dat.splitlines()
print lst
# print(lst) # for python 3

出力には行のリストがあります。

13
Abdullah Bilal

本当に簡単な方法:

with open(file) as g:
    stuff = g.readlines()

本格的なプログラムにしたい場合は、次のように入力してください。

file = raw_input ("Enter EXACT file name: ")
with open(file) as g:
    stuff = g.readlines()
print (stuff)
exit = raw_input("Press enter when you are done.")

何らかの理由で、それは.pyファイルを正しく読みません。

13
user6111687

次のようにしてファイルを開いて読むことができます。

file1 = open("filename","r")
# And for reading use
lines = file1.readlines()
file1.close()

リストlinesはすべての行を個々の要素として含み、Pythonが0からカウントを始めるのでlines["linenumber-1"]を使って特定の要素を呼び出すことができます。

11
Diksha Dhawan

非常に大きい/巨大なファイル に直面したい場合、 もっと早く読みたい場合 (Topcoder/Hackerrankコーディングコンペティションに参加していると想像してください)ファイルレベルで1行ずつ繰り返すのではなく、一度に1行ずつメモリバッファに入れます。

buffersize = 2**16
with open(path) as f: 
    while True:
        lines_buffer = f.readlines(buffersize)
        if not lines_buffer:
            break
        for line in lines_buffer:
            process(line)
9
pambda

私の知る限りでは、Pythonはネイティブの配列データ構造を持っていません。しかし、それは配列よりもはるかに使いやすいリストデータ構造をサポートします。

array = [] #declaring a list with name '**array**'
with open(PATH,'r') as reader :
    for line in reader :
        array.append(line)
7
Strik3r

いくつかの追加の利点とそれを行うための最も簡単な方法は次のとおりです。

lines = list(open('filename'))

または

lines = Tuple(open('filename'))

または

lines = set(open('filename'))

setの場合、行の順番を保存せずに重複した行を取り除くことを忘れないでください。

7
simhumileco

次のようなコードで簡単に実行できます。

lines = open(filePath).readlines()
4
Pedram

これがPython(3)ヘルパーです。 としょうかん ファイルの入出力を簡単にするために使用するクラス

import os

# handle files using a callback method, prevents repetition
def _FileIO__file_handler(file_path, mode, callback = lambda f: None):
  f = open(file_path, mode)
  try:
    return callback(f)
  except Exception as e:
    raise IOError("Failed to %s file" % ["write to", "read from"][mode.lower() in "r rb r+".split(" ")])
  finally:
    f.close()


class FileIO:
  # return the contents of a file
  def read(file_path, mode = "r"):
    return __file_handler(file_path, mode, lambda rf: rf.read())

  # get the lines of a file
  def lines(file_path, mode = "r", filter_fn = lambda line: len(line) > 0):
    return [line for line in FileIO.read(file_path, mode).strip().split("\n") if filter_fn(line)]

  # create or update a file (NOTE: can also be used to replace a file's original content)
  def write(file_path, new_content, mode = "w"):
    return __file_handler(file_path, mode, lambda wf: wf.write(new_content))

  # delete a file (if it exists)
  def delete(file_path):
    return os.remove() if os.path.isfile(file_path) else None

次に、FileIO.lines関数を使います。

file_ext_lines = FileIO.lines("./path/to/file.ext"):
for i, line in enumerate(file_ext_lines):
  print("Line {}: {}".format(i + 1, line))

mode(デフォルトは"r")およびfilter_fn(デフォルトは空行をチェックする)パラメータはオプションであることを忘れないでください。

readwrite、およびdeleteメソッドを削除してFileIO.linesをそのままにするか、read_linesという別のメソッドに変換することもできます。

4
LogicalBranch

これを使って:

import pandas as pd
data = pd.read_csv(filename) # You can also add parameters such as header, sep, etc.
array = data.values

dataはデータフレーム型で、ndarrayを取得するために値を使用します。 array.tolist()を使ってリストを取得することもできます。

4
Zero

概要と概要

filenameを使用して、Path(filename)オブジェクトからファイルを処理するか、open(filename) as fを直接使用して、次のいずれかを実行します。

  • list(fileinput.input(filename))
  • with path.open() as fを使用して、f.readlines()を呼び出します
  • list(f)
  • path.read_text().splitlines()
  • path.read_text().splitlines(keepends=True)
  • fileinput.inputまたはfおよびlist.appendを各行ごとに繰り返し処理します
  • fをバインドされたlist.extendメソッドに渡す
  • リスト内包表記でfを使用する

以下にそれぞれのユースケースを説明します。

Pythonでは、ファイルを1行ずつ読み取るにはどうすればよいですか?

これは素晴らしい質問です。まず、サンプルデータを作成しましょう。

from pathlib import Path
Path('filename').write_text('foo\nbar\nbaz')

ファイルオブジェクトは遅延イテレータですので、繰り返してください。

filename = 'filename'
with open(filename) as f:
    for line in f:
        line # do something with the line

または、複数のファイルがある場合は、別の遅延イテレータfileinput.inputを使用します。ファイルが1つだけの場合:

import fileinput

for line in fileinput.input(filename): 
    line # process the line

または、複数のファイルの場合、ファイル名のリストを渡します。

for line in fileinput.input([filename]*2): 
    line # process the line

繰り返しますが、上記のffileinput.inputは両方とも遅延イテレータです。イテレータは1回しか使用できないため、冗長性を回避しながら機能的なコードを提供するために、ここからは少し簡潔なfileinput.input(filename)を使用します。

Pythonでは、ファイルを1行ずつリストに読み込むにはどうすればよいですか?

ああ、なんらかの理由でリストに入れたいですか?できればそれは避けたい。しかし、あなたが主張する場合... fileinput.input(filename)の結果をlistに渡すだけです:

list(fileinput.input(filename))

別の直接的な答えは、f.readlinesを呼び出すことです。これは、ファイルの内容(オプションのhint文字数までを返すため、couldこの方法で複数のリストに分割します)。

このファイルオブジェクトには2つの方法でアクセスできます。 1つの方法は、ファイル名をopenビルトインに渡すことです。

filename = 'filename'

with open(filename) as f:
    f.readlines()

またはpathlibモジュールの新しいPathオブジェクトを使用します(これは非常に好きになったので、これから使用します)。

from pathlib import Path

path = Path(filename)

with path.open() as f:
    f.readlines()

listは、ファイルイテレータを使用してリストを返します。これも非常に直接的な方法です。

with path.open() as f:
    list(f)

分割する前にテキスト全体を単一の文字列としてメモリに読み込むことを気にしない場合は、Pathオブジェクトとsplitlines()文字列メソッドを使用して、これをワンライナーとして実行できます。デフォルトでは、splitlinesは改行を削除します。

path.read_text().splitlines()

改行を保持する場合は、keepends=Trueを渡します。

path.read_text().splitlines(keepends=True)

ファイルを1行ずつ読み取り、リストの最後に各行を追加します。

いくつかの方法で簡単に最終結果を示したので、これはちょっと馬鹿げています。ただし、リストを作成するときに行をフィルタリングまたは操作する必要がある場合がありますので、このリクエストをユーモアにしましょう。

list.appendを使用すると、追加する前に各行をフィルタリングまたは操作できます。

line_list = []
for line in fileinput.input(filename):
    line_list.append(line)

line_list

list.extendの使用はもう少し直接的で、既存のリストがある場合はおそらく便利です。

line_list = []
line_list.extend(fileinput.input(filename))
line_list

または、より慣用的に、代わりにリストの内包表記を使用し、必要に応じてリスト内でマップおよびフィルター処理することができます。

[line for line in fileinput.input(filename)]

または、さらに直接、円を閉じるには、リストに渡して、行を操作せずに直接新しいリストを作成します。

list(fileinput.input(filename))

結論

ファイルから行をリストに入れる多くの方法を見てきましたが、大量のデータをリストに具体化することは避け、代わりにPythonの遅延反復を使用してデータを処理することをお勧めします。

つまり、fileinput.inputまたはwith path.open() as fを優先します。

3
Aaron Hall

この短いスニペットをチェックしてください

fileOb=open("filename.txt","r")
data=fileOb.readlines() #returns a array of lines.

または 

fileOb=open("filename.txt","r")
data=list(fileOb) #returns a array of lines.

reference docs 参照用

3
Seenivasan

NumPyでloadtxtコマンドを使用することもできます。これはgenfromtxtより少ない条件をチェックするので、速いかもしれません。

import numpy
data = numpy.loadtxt(filename, delimiter="\n")
3
asampat3090

私は下記の方法の一つを試すでしょう。私が使用するサンプルファイルはdummy.txtという名前です。ファイル here を見つけることができます。ファイルはコードと同じディレクトリにあると思います(fpathを変更して適切なファイル名とフォルダパスを含めることができます)。 

以下の両方の例で、必要なリストはlstによって与えられます。

1.>第一の方法

fpath = 'dummy.txt'
with open(fpath, "r") as f: lst = [line.rstrip('\n \t') for line in f]

print lst
>>>['THIS IS LINE1.', 'THIS IS LINE2.', 'THIS IS LINE3.', 'THIS IS LINE4.']

2.> 2番目の方法 では、Python標準ライブラリのcsv.reader モジュールを使用できます

import csv
fpath = 'dummy.txt'
with open(fpath) as csv_file:
    csv_reader = csv.reader(csv_file, delimiter='   ')
    lst = [row[0] for row in csv_reader] 

print lst
>>>['THIS IS LINE1.', 'THIS IS LINE2.', 'THIS IS LINE3.', 'THIS IS LINE4.']

2つの方法のどちらでも使用できます。 lstの作成にかかる時間は、2つの方法でほぼ同じです。

1

私は以下を使うのが好きです。すぐに行を読みます。

contents = []
for line in open(filepath, 'r').readlines():
    contents.append(line.strip())

あるいはリスト内包表記を使う:

contents = [line.strip() for line in open(filepath, 'r').readlines()]
1
Daniel

コマンドラインバージョン

#!/bin/python3
import os
import sys
abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
filename = dname + sys.argv[1]
arr = open(filename).read().split("\n") 
print(arr)

で実行します。

python3 somefile.py input_file_name.txt
1
jasonleonhard

空の文字列要素を防ぐために、私は内容を読み、それをfilterに渡したいと思う文書に空の行もある場合

with open(myFile, "r") as f:
    excludeFileContent = list(filter(None, f.read().splitlines()))
0
jeanggi90