Hướng dẫn read file line by line and store in list python - đọc tệp từng dòng và lưu trữ trong python danh sách

Trong ví dụ này, bạn sẽ học cách đọc một dòng từng dòng vào một danh sách.

Để hiểu ví dụ này, bạn nên có kiến ​​thức về các chủ đề lập trình Python sau:

  • Tệp Python I/O

Ví dụ 1: Sử dụng Readlines ()

Đặt nội dung của tệp

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
1

honda 1948
mercedes 1926
ford 1903

Mã nguồn

with open("data_file.txt") as f:
    content_list = f.readlines()

# print the list
print(content_list)

# remove new line characters
content_list = [x.strip() for x in content_list]
print(content_list)

Đầu ra

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
2 Trả về một danh sách các dòng từ tệp.

  • Đầu tiên, mở tệp và đọc tệp bằng
    ['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
    ['honda 1948', 'mercedes 1926', 'ford 1903']
    2.
  • Nếu bạn muốn xóa các dòng mới ('
    ['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
    ['honda 1948', 'mercedes 1926', 'ford 1903']
    4'), bạn có thể sử dụng
    ['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
    ['honda 1948', 'mercedes 1926', 'ford 1903']
    5.

Ví dụ 2: Sử dụng cho vòng lặp và danh sách hiểu biết

with open('data_file.txt') as f:
    content_list = [line for line in f]

print(content_list)

# removing the characters
with open('data_file.txt') as f:
    content_list = [line.rstrip() for line in f]

print(content_list)

Đầu ra

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
2 Trả về một danh sách các dòng từ tệp.

Để đọc một tệp vào danh sách, bạn cần phải làm ba điều:

  • Mở tập tin
  • Đọc tệp
  • Lưu trữ nội dung như danh sách

May mắn thay, Python làm cho nó rất dễ dàng để làm những việc này, vì vậy cách ngắn nhất để đọc tệp vào danh sách là:

lst = list(open(filename))

Tuy nhiên tôi sẽ thêm một số lời giải thích.

Mở tập tin

Tôi giả sử rằng bạn muốn mở một tệp cụ thể và bạn không giao dịch trực tiếp với tay cầm tệp (hoặc tay cầm giống như tệp). Chức năng được sử dụng phổ biến nhất để mở một tệp trong Python là

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
8, cần một đối số bắt buộc và hai đối số tùy chọn trong Python 2.7:

  • Tên tệp
  • Cách thức
  • Bộ đệm (tôi sẽ bỏ qua đối số này trong câu trả lời này)

Tên tệp phải là một chuỗi đại diện cho đường dẫn đến tệp. Ví dụ:

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)

Lưu ý rằng phần mở rộng tệp cần được chỉ định. Điều này đặc biệt quan trọng đối với người dùng Windows vì các phần mở rộng tệp như

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
9 hoặc
with open('data_file.txt') as f:
    content_list = [line for line in f]

print(content_list)

# removing the characters
with open('data_file.txt') as f:
    content_list = [line.rstrip() for line in f]

print(content_list)
0, v.v. được ẩn theo mặc định khi được xem trong Explorer.

Đối số thứ hai là

with open('data_file.txt') as f:
    content_list = [line for line in f]

print(content_list)

# removing the characters
with open('data_file.txt') as f:
    content_list = [line.rstrip() for line in f]

print(content_list)
1, đó là
with open('data_file.txt') as f:
    content_list = [line for line in f]

print(content_list)

# removing the characters
with open('data_file.txt') as f:
    content_list = [line.rstrip() for line in f]

print(content_list)
2 theo mặc định, có nghĩa là "chỉ đọc". Đó chính xác là những gì bạn cần trong trường hợp của bạn.

Nhưng trong trường hợp bạn thực sự muốn tạo một tệp và/hoặc ghi vào một tệp, bạn sẽ cần một đối số khác ở đây. Có một câu trả lời tuyệt vời nếu bạn muốn có một cái nhìn tổng quan.

Để đọc một tệp, bạn có thể bỏ qua

with open('data_file.txt') as f:
    content_list = [line for line in f]

print(content_list)

# removing the characters
with open('data_file.txt') as f:
    content_list = [line.rstrip() for line in f]

print(content_list)
1 hoặc chuyển nó một cách rõ ràng:

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

Cả hai sẽ mở tệp ở chế độ chỉ đọc. Trong trường hợp bạn muốn đọc trong tệp nhị phân trên Windows, bạn cần sử dụng chế độ

with open('data_file.txt') as f:
    content_list = [line for line in f]

print(content_list)

# removing the characters
with open('data_file.txt') as f:
    content_list = [line.rstrip() for line in f]

print(content_list)
4:

open(filename, 'rb')

Trên các nền tảng khác,

with open('data_file.txt') as f:
    content_list = [line for line in f]

print(content_list)

# removing the characters
with open('data_file.txt') as f:
    content_list = [line.rstrip() for line in f]

print(content_list)
5 (chế độ nhị phân) chỉ đơn giản là bị bỏ qua.


Bây giờ tôi đã chỉ ra cách

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
8 tệp, hãy nói về thực tế là bạn luôn cần phải
with open('data_file.txt') as f:
    content_list = [line for line in f]

print(content_list)

# removing the characters
with open('data_file.txt') as f:
    content_list = [line.rstrip() for line in f]

print(content_list)
7. Nếu không, nó sẽ giữ một tay cầm tệp mở cho tệp cho đến khi quá trình thoát ra (hoặc Python rác xử lý tệp).

Trong khi bạn có thể sử dụng:

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

Điều đó sẽ không đóng tệp khi một cái gì đó giữa

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
8 và
with open('data_file.txt') as f:
    content_list = [line for line in f]

print(content_list)

# removing the characters
with open('data_file.txt') as f:
    content_list = [line.rstrip() for line in f]

print(content_list)
7 ném một ngoại lệ. Bạn có thể tránh điều đó bằng cách sử dụng
['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
0 và
['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
1:

with open("data_file.txt") as f:
    content_list = f.readlines()

# print the list
print(content_list)

# remove new line characters
content_list = [x.strip() for x in content_list]
print(content_list)
0

Tuy nhiên, Python cung cấp các nhà quản lý bối cảnh có cú pháp đẹp hơn (nhưng đối với

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
8, nó gần giống với
['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
0 và
['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
1 ở trên):

with open("data_file.txt") as f:
    content_list = f.readlines()

# print the list
print(content_list)

# remove new line characters
content_list = [x.strip() for x in content_list]
print(content_list)
1

Cách tiếp cận cuối cùng là cách tiếp cận được đề xuất để mở một tập tin trong Python!recommended approach to open a file in Python!

Đọc tập tin

Được rồi, bạn đã mở tệp, bây giờ làm thế nào để đọc nó?

Hàm

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
8 trả về một đối tượng
['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
6 và nó hỗ trợ giao thức lặp Pythons. Mỗi lần lặp sẽ cung cấp cho bạn một dòng:

with open("data_file.txt") as f:
    content_list = f.readlines()

# print the list
print(content_list)

# remove new line characters
content_list = [x.strip() for x in content_list]
print(content_list)
2

Điều này sẽ in từng dòng của tệp. Tuy nhiên, lưu ý rằng mỗi dòng sẽ chứa một ký tự mới

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
4 ở cuối (bạn có thể muốn kiểm tra xem Python của bạn có được xây dựng với hỗ trợ Newlines Universal hay không - nếu không bạn cũng có thể có
['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
8 trên Windows hoặc
['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
9 trên Mac làm Newlines). Nếu bạn không muốn rằng bạn có thể chỉ cần xóa ký tự cuối cùng (hoặc hai ký tự cuối cùng trên Windows):

with open("data_file.txt") as f:
    content_list = f.readlines()

# print the list
print(content_list)

# remove new line characters
content_list = [x.strip() for x in content_list]
print(content_list)
3

Nhưng dòng cuối cùng không nhất thiết phải có một dòng mới, vì vậy người ta không nên sử dụng nó. Người ta có thể kiểm tra xem nó có kết thúc bằng một dòng mới hay không và nếu loại bỏ nó:

with open("data_file.txt") as f:
    content_list = f.readlines()

# print the list
print(content_list)

# remove new line characters
content_list = [x.strip() for x in content_list]
print(content_list)
4

Nhưng bạn có thể chỉ cần loại bỏ tất cả các không gian trắng (bao gồm cả ký tự

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
4) từ cuối chuỗi, điều này cũng sẽ loại bỏ tất cả các không gian trắng kéo dài khác để bạn phải cẩn thận nếu những điều này quan trọng:

with open("data_file.txt") as f:
    content_list = f.readlines()

# print the list
print(content_list)

# remove new line characters
content_list = [x.strip() for x in content_list]
print(content_list)
5

Tuy nhiên, nếu các dòng kết thúc bằng

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
8 (Windows "Newlines") rằng
lst = list(open(filename))
2 cũng sẽ chăm sóc
['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
9!

Lưu trữ nội dung như danh sách

May mắn thay, Python làm cho nó rất dễ dàng để làm những việc này, vì vậy cách ngắn nhất để đọc tệp vào danh sách là:

with open("data_file.txt") as f:
    content_list = f.readlines()

# print the list
print(content_list)

# remove new line characters
content_list = [x.strip() for x in content_list]
print(content_list)
6

Tuy nhiên tôi sẽ thêm một số lời giải thích.

with open("data_file.txt") as f:
    content_list = f.readlines()

# print the list
print(content_list)

# remove new line characters
content_list = [x.strip() for x in content_list]
print(content_list)
7

Mở tập tin

with open("data_file.txt") as f:
    content_list = f.readlines()

# print the list
print(content_list)

# remove new line characters
content_list = [x.strip() for x in content_list]
print(content_list)
8

Tôi giả sử rằng bạn muốn mở một tệp cụ thể và bạn không giao dịch trực tiếp với tay cầm tệp (hoặc tay cầm giống như tệp). Chức năng được sử dụng phổ biến nhất để mở một tệp trong Python là

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
8, cần một đối số bắt buộc và hai đối số tùy chọn trong Python 2.7:

Tên tệp

with open("data_file.txt") as f:
    content_list = f.readlines()

# print the list
print(content_list)

# remove new line characters
content_list = [x.strip() for x in content_list]
print(content_list)
9

or:

['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
['honda 1948', 'mercedes 1926', 'ford 1903']
0

Chúng tự động chăm sóc các dòng mới của Trailing vì ký tự

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)
0 không được bao gồm. Tuy nhiên, chúng không lý tưởng vì bạn giữ tệp như chuỗi và như một danh sách các dòng trong bộ nhớ!

Bản tóm tắt

  • Sử dụng
    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)
    
    1 khi mở tệp vì bạn không cần phải tự mình đóng tệp và nó đóng tệp ngay cả khi một số ngoại lệ xảy ra.
  • ['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
    ['honda 1948', 'mercedes 1926', 'ford 1903']
    6 Các đối tượng hỗ trợ giao thức lặp, vì vậy việc đọc từng dòng tệp đơn giản như
    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)
    
    3.
  • Luôn duyệt tài liệu cho các chức năng/lớp có sẵn. Hầu hết thời gian có một trận đấu hoàn hảo cho nhiệm vụ hoặc ít nhất một hoặc hai người tốt. Lựa chọn rõ ràng trong trường hợp này sẽ là
    ['honda 1948\n', 'mercedes 1926\n', 'ford 1903']
    ['honda 1948', 'mercedes 1926', 'ford 1903']
    2 nhưng nếu bạn muốn xử lý các dòng trước khi lưu trữ chúng trong danh sách, tôi sẽ đề xuất một sự hiểu biết danh sách đơn giản.

Làm thế nào để bạn đọc một tập tin trong Python và lưu trữ nó trong một danh sách?

Bạn có thể đọc một tệp văn bản bằng các phương thức Open () và Readlines (). Để đọc một tệp văn bản vào một danh sách, hãy sử dụng phương thức Split (). Phương pháp này chia các chuỗi vào một danh sách tại một nhân vật nhất định. Trong ví dụ trên, chúng tôi chia một chuỗi thành một danh sách dựa trên vị trí của dấu phẩy và một không gian (Hồi,,).use the split() method. This method splits strings into a list at a certain character. In the example above, we split a string into a list based on the position of a comma and a space (“, ”).

Làm thế nào để bạn đọc một dòng tệp văn bản từng dòng và lưu trữ nó trong Python?

Chương trình Python đọc một dòng tệp từng dòng vào một danh sách..
Đầu tiên, mở tệp và đọc tệp bằng readlines () ..
Nếu bạn muốn xóa các dòng mới ('\ n'), bạn có thể sử dụng dải () ..

Làm thế nào để bạn đọc một tệp văn bản vào một danh sách trong Python?

Ví dụ 1: Chuyển đổi tệp văn bản thành danh sách bằng cách chia văn bản về sự xuất hiện của '.'.Chúng tôi mở tệp trong chế độ đọc, sau đó đọc tất cả văn bản bằng cách đọc () và lưu trữ nó vào một biến có tên là dữ liệu.Sau đó, chúng tôi thay thế phần cuối của dòng ('/n') bằng '' và chia văn bản hơn nữa khi '.

Phương pháp nào được sử dụng để đọc từng dòng trong từng dòng trong Python?

Phương thức Python Readline () Phương thức read () Phương thức trả về một dòng từ tệp.Bạn cũng có thể chỉ định số lượng byte từ dòng để trả về, bằng cách sử dụng tham số kích thước.readline() Method The readline() method returns one line from the file. You can also specified how many bytes from the line to return, by using the size parameter.