Pertanyaan Dengan Python, bagaimana saya membaca file baris demi baris ke dalam daftar?


Bagaimana saya membaca setiap baris file dengan Python dan menyimpan setiap baris sebagai elemen dalam daftar?

Saya ingin membaca file baris demi baris dan menambahkan setiap baris ke bagian akhir daftar.


1694
2017-07-18 22:25


asal


Jawaban:


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] 

1649
2017-07-18 22:28



Lihat Input dan Ouput:

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

atau dengan menghapus karakter baris baru:

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

Catatan editor: Perintah pengupasan whitespace asli dari jawaban ini, line.strip(), sebagaimana disiratkan oleh komentar Janus Troelsen, akan dihapus semua memimpin dan tertinggal ruang putih, bukan hanya trailing \n.


779
2017-07-18 22:28



Ini lebih eksplisit dari yang diperlukan, tetapi melakukan apa yang Anda inginkan.

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

367
2017-07-18 22:27



Ini akan menghasilkan "array" garis dari file.

lines = tuple(open(filename, 'r'))

206
2017-07-18 22:27



Jika Anda menginginkan \n termasuk:

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

Jika kamu tidak mau \n termasuk:

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

150
2018-03-02 04:22



Anda cukup melakukan hal-hal berikut, seperti yang telah disarankan:

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

Perhatikan bahwa pendekatan ini memiliki 2 kerugian:

1) Anda menyimpan semua baris dalam memori. Dalam kasus umum, ini adalah ide yang sangat buruk. File bisa sangat besar, dan Anda bisa kehabisan memori. Bahkan jika itu tidak besar, itu hanya membuang-buang memori.

2) Ini tidak memungkinkan pemrosesan setiap baris saat Anda membacanya. Jadi, jika Anda memproses baris Anda setelah ini, itu tidak efisien (membutuhkan dua melewati bukan satu).

Pendekatan yang lebih baik untuk kasus umum adalah sebagai berikut:

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

Di mana Anda mendefinisikan fungsi proses Anda dengan cara apa pun yang Anda inginkan. Sebagai contoh:

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

(Implementasi dari Superman kelas dibiarkan sebagai latihan untuk Anda).

Ini akan berfungsi dengan baik untuk ukuran file apa pun dan Anda pergi melalui file Anda hanya dalam 1 pass. Ini biasanya cara kerja parser generik.


91
2018-02-25 09:13



Jika Anda tidak mau menutup file, liner satu ini berfungsi:

lines = open('file.txt').read().split("\n")

Itu tradisional cara:

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

Menggunakan with (disarankan):

with open('file.txt') as fp:
    lines = fp.read().split("\n")

61
2018-04-20 05:53