Python 3 ghi danh sách vào tệp

Làm cách nào để ghi toàn bộ danh sách các phần tử vào một tệp? . txt'.

1. Sử dụng phương pháp ghi.
______0 Danh sách được lặp lại và trong mỗi lần lặp lại, phương thức ghi sẽ ghi một dòng vào một tệp cùng với ký tự xuống dòng.

2. Sử dụng phương thức nối chuỗi.
______1  Khi sử dụng phương thức nối, toàn bộ danh sách có thể được nối bằng dấu phân cách và tạo thành một chuỗi. Bây giờ, sử dụng phương thức ghi, chuỗi có thể được ghi vào tệp. Trong trường hợp này, chỉ cần một phương thức ghi cho toàn bộ danh sách.

3. Sử dụng phép nối chuỗi cùng với cú pháp mở.
#!/usr/bin/python

l1=['hi','hello','welcome']

with open['f1.txt','w'] as f:
  f.write['\n'.join[l1]]
  Cú pháp with open sẽ tự động đóng tệp ở cuối khối, do đó không cần gọi rõ ràng phương thức close. Thay vì sử dụng một biến để chứa chuỗi đã nối, nó được cấp trực tiếp cho phương thức ghi.

4. Sử dụng phương pháp writelines.
______3 Python cung cấp một phương thức, writelines, rất hữu ích để ghi danh sách vào một tệp. phương thức ghi lấy một chuỗi làm đối số, writelines lấy một danh sách. phương thức writelines sẽ ghi tất cả các phần tử của danh sách vào một tệp. Vì nó ghi nguyên trạng vào tệp, nên trước khi gọi phương thức writelines, các phần tử danh sách phải được nối thêm các ký tự xuống dòng, để các phần tử danh sách sẽ xuất hiện trong các dòng riêng lẻ. Điều này đạt được bằng cách sử dụng chức năng bản đồ sẽ thêm một dòng mới vào mọi thành phần danh sách.

Trong Python, danh sách là kiểu dữ liệu phổ biến để lưu trữ nhiều giá trị ở cùng một nơi để dễ dàng truy cập. Các giá trị này có thể là số, chuỗi hoặc đối tượng

Đôi khi, thật hữu ích khi ghi nội dung của danh sách vào một tệp bên ngoài

Để viết một danh sách Python vào một tệp

  1. Mở một tệp mới
  2. Tách danh sách các chuỗi bằng một dòng mới
  3. Thêm kết quả vào tệp văn bản

Đây là một mã ví dụ cho thấy làm thế nào để làm điều đó

names = ["Alice", "Bob", "Charlie"]

with open["example.txt", mode="w"] as file:
    file.write["\n".join[names]]

Kết quả là bạn sẽ thấy một tệp văn bản với các tên được phân tách bằng dấu ngắt dòng

Alice
Bob
Charlie

Rõ ràng, đây chỉ là một cách tiếp cận. Nếu bạn chưa hài lòng với nó, hãy xem các ví dụ khác bên dưới

Viết danh sách vào tệp nguyên trạng

Bạn không thể trực tiếp viết một danh sách vào một tập tin. Nhưng bạn có thể chuyển đổi danh sách thành một chuỗi, rồi viết nó

Ví dụ

names = ["Alice", "Bob", "Charlie"]

with open["example.txt", mode="w"] as file:
    file.write[str[names]]

Kết quả bạn thấy một file văn bản có tên là

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
l1=map[lambda x:x+'\n', l1]
f.writelines[l1]
f.close[]
3 với nội dung như sau

['Alice', 'Bob', 'Charlie']

Viết danh sách vào tệp được phân tách bằng dấu phẩy mà không có dấu ngoặc

Để viết một danh sách vào một tệp văn bản với các giá trị được phân tách bằng dấu phẩy không có dấu ngoặc, hãy sử dụng chuỗi. phương thức tham gia []

Ví dụ

names = ["Alice", "Bob", "Charlie"]

with open["example.txt", mode="w"] as file:
    file.write[", ".join[names]]
Kết quả, bạn thấy một tệp văn bản có tên là
#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
l1=map[lambda x:x+'\n', l1]
f.writelines[l1]
f.close[]
3 với nội dung như sau. ______9

Viết danh sách Python vào tệp được phân định bằng tab

Đôi khi, bạn có thể muốn ghi nội dung danh sách vào một tệp bên ngoài bằng cách sử dụng các tab làm dấu phân cách giữa các giá trị

Để làm điều này, bạn cần sử dụng chuỗi. join[] để nối các thành phần danh sách bằng cách sử dụng tab làm dấu phân cách

Ví dụ

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
0

Kết quả là một tệp có tên ví dụ. txt với các nội dung sau được phân tách bằng tab

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
1

Sự kết luận

Hôm nay bạn đã học cách viết một danh sách vào một tệp bằng Python

Tóm lại, tất cả những gì bạn cần làm là mở một tệp, tách các chuỗi và ghi chúng vào tệp. Tất cả điều này xảy ra bằng cách sử dụng các phương thức gốc trong Python trong một vài dòng mã

Biết cách viết các phần tử của danh sách vào một tệp trong Python có thể hữu ích. Trong hướng dẫn này, bạn sẽ thấy cách thực hiện điều đó theo nhiều cách

Một cách tiếp cận phổ biến để ghi các phần tử của danh sách vào tệp bằng Python là trước tiên lặp qua các phần tử của danh sách bằng vòng lặp for. Sau đó, sử dụng một đối tượng tệp để ghi mọi phần tử của danh sách vào một tệp như một phần của mỗi lần lặp lại vòng lặp. Đối tượng tệp cần được mở ở chế độ ghi

Có nhiều tình huống trong đó việc ghi các mục của danh sách vào một tệp có thể hữu ích

Hãy xem xét một ví dụ

Mục lục

  • Cách lưu trữ các thành phần của danh sách Python trong một tệp
  • Bạn gặp lỗi gì khi ghi vào tệp được mở ở chế độ đọc?
  • Viết một danh sách vào một tệp bằng câu lệnh With Open
  • Viết một danh sách vào một tệp bằng phương pháp nối chuỗi
  • Viết danh sách Python vào tệp bằng cách sử dụng Writelines
  • Cách ghi danh sách vào tệp bằng Python Lambda
  • Sự kết luận

Cách lưu trữ các thành phần của danh sách Python trong một tệp

Hãy tưởng tượng bạn đang xây dựng một ứng dụng cần duy trì danh sách các mục sau khi thực thi

Điều này có thể được yêu cầu, ví dụ: nếu mỗi lần bạn chạy ứng dụng, bạn lưu trữ dữ liệu trong một tệp và dữ liệu đó có thể được đọc và sử dụng trong lần chạy ứng dụng tiếp theo của bạn

Hãy cùng xem cách bạn có thể lấy danh sách các chuỗi bên dưới và lưu trữ từng chuỗi trong một tệp bằng Python

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
2

Chúng tôi sẽ mở một đối tượng tệp ở chế độ ghi và sau đó sử dụng vòng lặp for để ghi từng phần tử vào tệp

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
3

Sử dụng hàm tích hợp Python open[], chúng tôi mở một tệp mới ở chế độ ghi. Mỗi lần lặp của vòng lặp for ghi một tháng vào tệp

Sau đó, chúng tôi đóng đối tượng tệp sau khi chúng tôi đã ghi tất cả các phần tử trong danh sách vào nó

Bây giờ, hãy xem nội dung của tệp trông như thế nào bằng cách sử dụng lệnh cat

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
4

Có vẻ như chúng ta đang thiếu các ký tự dòng mới ở cuối mỗi dòng, hãy thêm nó vào phương thức ghi trong mỗi lần lặp của vòng lặp for

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
5

Đầu ra bây giờ trông tốt hơn rất nhiều

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
6

Bạn gặp lỗi gì khi ghi vào tệp được mở ở chế độ đọc?

Tôi muốn xem điều gì sẽ xảy ra nếu chúng tôi không mở tệp một cách rõ ràng ở chế độ ghi

Thay thế dòng sau trong mã Python của bạn

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
7

Với những điều sau đây…

…lưu ý rằng chúng ta đã loại bỏ tham số thứ hai được truyền cho hàm open[] yêu cầu hàm mở tệp ở chế độ ghi

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
8

Đây là lỗi chúng tôi gặp phải khi chạy mã nếu chúng tôi không xóa các tháng. txt được tạo trong ví dụ trước

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
9

Lỗi cho chúng tôi biết rằng tệp chưa được mở để ghi. Không truyền tham số thứ hai cho hàm open[], chúng tôi đã mở tệp của mình ở chế độ đọc

Nếu bạn xóa các tháng. txt và chạy lại chương trình, bạn sẽ gặp một lỗi khác

#!/usr/bin/python

l1=['hi','hello','welcome']

with open['f1.txt','w'] as f:
  f.write['\n'.join[l1]]
0

Trình thông dịch Python cố mở tệp ở chế độ đọc nhưng xem xét rằng tệp không tồn tại, chúng tôi nhận được lỗi "Không có tệp hoặc thư mục như vậy"

Viết một danh sách vào một tệp bằng câu lệnh With Open

Thay vì nhớ đóng đối tượng tệp sau khi kết thúc vòng lặp for, chúng ta có thể sử dụng câu lệnh Python with open

Điều này tạo ra một trình quản lý bối cảnh tự động đóng đối tượng tệp khi chúng ta không cần nó nữa

Đây là cách mã Python của chúng ta trở thành…

#!/usr/bin/python

l1=['hi','hello','welcome']

with open['f1.txt','w'] as f:
  f.write['\n'.join[l1]]
1

Ngắn gọn hơn rất nhiều

Thực hiện nó và xác nhận rằng mọi phần tử trong danh sách được ghi vào tệp như mong đợi

Viết một danh sách vào một tệp bằng phương pháp nối chuỗi

Tôi tự hỏi liệu tôi có thể thay thế vòng lặp for bằng một dòng duy nhất sử dụng phương thức string join[] không

Phương thức nối chuỗi nối các phần tử của một chuỗi thành một chuỗi duy nhất trong đó mọi phần tử được phân tách khỏi phần tử khác bằng chuỗi mà phương thức nối được áp dụng cho

Có lẽ việc hiển thị nó trong trình bao Python sẽ dễ dàng hơn 🙂

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
30

Tôi đã sử dụng ký tự # trong ví dụ này vì theo cách này, sẽ dễ dàng hơn để xem cách sử dụng ký tự # để phân tách các phần tử trong danh sách

Lưu ý rằng ký tự phân tách # không xuất hiện sau phần tử cuối cùng

Vì vậy, đây là kết quả nếu chúng ta sử dụng phương pháp này trong chương trình của mình và thay thế ký tự # bằng ký tự dòng mới

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
31

Kết quả là

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
32

Đồng đô la ở cuối dòng cuối cùng là bản thân vỏ vì ký tự dòng mới không có ở cuối dòng cuối cùng

Vì vậy, loại phương thức này hoạt động nhưng nó không tốt bằng vòng lặp for vì nó không thêm một ký tự dòng mới vào dòng cuối cùng của tệp

Viết danh sách Python vào tệp bằng cách sử dụng Writelines

Đối tượng tệp Python cung cấp một phương thức có tên writelines[] ghi một chuỗi các chuỗi vào một tệp

Tôi cảm thấy đó có thể là một cách hay khác để làm điều này, hãy thử xem

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
33

Đây là đầu ra khi tôi chạy chương trình

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
34

Hmmm…điều này có vẻ không ổn

Phương thức writelines[] của tệp không thêm bất kỳ dấu phân cách dòng nào

Tôi tự hỏi tại sao?. ?

Những gì chúng ta có thể làm là thêm ký tự dòng mới sau mỗi phần tử trong danh sách và sau đó chuyển danh sách sang phương thức writelines

Hãy sử dụng cách hiểu danh sách để làm điều đó

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
35

Bạn có thể thấy rằng chúng ta cũng đang sử dụng phương thức string format[] để thêm ký tự dòng mới vào cuối mỗi chuỗi trong danh sách

Đầu ra chúng tôi nhận được có vẻ tốt

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
36

Cách ghi danh sách vào tệp bằng Python Lambda

Cách tiếp cận cuối cùng mà chúng ta sẽ sử dụng để ghi các chuỗi trong danh sách của mình vào một tệp cũng sẽ sử dụng hàm lambda và hàm bản đồ

Việc sử dụng lambdas không thực sự cần thiết, chúng tôi đang thực hiện nó trong hướng dẫn này như một bài tập để làm mới các khái niệm Python nâng cao hơn

Dưới đây bạn có thể xem cú pháp của chức năng bản đồ

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
37

Hàm map áp dụng hàm được truyền dưới dạng tham số đầu tiên cho mọi mục của iterable. Trong trường hợp này, hàm sẽ là hàm lambda nối thêm ký tự dòng mới vào một chuỗi đã cho và ghi kết quả vào một đối tượng tệp

Chúng tôi sẽ sử dụng điều này như một cách tiếp cận chung để viết mọi mục trong danh sách, theo sau là một dòng mới vào tệp đầu ra

Đây là chức năng lambda để sử dụng

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
38

Và bây giờ hãy chuyển lambda cho hàm map

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
39

Hãy xác nhận xem đầu ra có đúng không…

#!/usr/bin/python

l1=['hi','hello','welcome']

f=open['f1.txt','w']
s1='\n'.join[l1]
f.write[s1]
f.close[]
36

Vâng, đúng vậy

Sự kết luận

Chúng tôi đã thấy rất nhiều cách tiếp cận khác nhau để ghi các phần tử của danh sách Python vào một tệp

Đây là một bài tập tốt để thực hành nhiều cách giải quyết cùng một vấn đề trong Python

Hãy cho tôi biết trong phần bình luận, bạn thích cái nào hơn?

Bài viết liên quan

Tìm giá trị tối thiểu và tối đa trong từ điển Python [Từng bước]

5 cách sao chép danh sách trong Python. Hãy Khám Phá Chúng

Python có phải là ngôn ngữ kịch bản không?

Claudio Sabato

Tôi là Trưởng nhóm công nghệ, Kỹ sư phần mềm và Huấn luyện viên lập trình. Tôi muốn giúp bạn trong hành trình trở thành Nhà phát triển siêu hạng

Bạn có thể ghi danh sách vào tệp bằng Python không?

phương thức writelines[] để ghi danh sách các dòng vào một tệp. Chúng ta có thể viết nhiều dòng cùng lúc bằng phương thức writelines[]. Ví dụ: chúng ta có thể chuyển danh sách các chuỗi để thêm vào tệp. Sử dụng phương pháp này khi bạn muốn viết một danh sách vào một tập tin.

Làm. đọc bằng Python trả về một danh sách?

Phương thức readlines[] của tệp Python . Sử dụng tham số gợi ý để giới hạn số dòng được trả về. Nếu tổng số byte được trả về vượt quá số lượng đã chỉ định, thì không có dòng nào nữa được trả về. The readlines[] method returns a list containing each line in the file as a list item. Use the hint parameter to limit the number of lines returned. If the total number of bytes returned exceeds the specified number, no more lines are returned.

Chủ Đề