Đọc tệp ghi trong Python hoặc trong bất kỳ ngôn ngữ nào khác là một thao tác thường xuyên được sử dụng trong quá trình làm việc. Bài viết này sẽ hướng dẫn bạn chi tiết cách đọc file trong Python và ghi file trong Python. Ngoài ra, mình cũng sẽ chia sẻ cách đọc cấu trúc từ điển ra file JSON Show NỘI DUNG BÀI VIẾT Đọc tệp ghi trong PythonQuá trình đọc tệp ghi trong Python trải qua 3 bước. Mở tệp, Đọc hoặc ghi tệp và cuối cùng là đóng tệp. Nhưng trước tiên, chúng ta sẽ xem xét các chế độ khi làm việc với tệp trong Python nhé Chế độ truy cập tệp trong PythonKhá giống với các ngôn ngữ khác, việc đọc tệp ghi trong Python cũng có các chế độ làm việc tương ứng Chế độGiải thíchChỉ đọc ('r')Chế độ mặc định khi mở tệp. Ở chế độ này, tệp được mở ở chế độ chỉ được phép đọc dữ liệu và con trỏ tệp bắt đầu ở vị trí tệp đầu. Nếu tệp không tồn tại, sẽ xảy ra lỗi FileNotFoundError ngoại lệ. Read & Write (‘r+’)Mở file cho phép cả đọc và ghi. Vị trí con trỏ tệp ở vị trí đầu của tệp. Nếu tệp không tồn tại, sẽ xảy ra lỗi FileNotFoundError ngoại lệ. Chỉ ghi (‘w’)Mở tệp và chỉ cho phép ghi. Vị trí con trỏ tệp ở vị trí đầu của tệp. Nếu tệp không tồn tại, sẽ tự động tạo tệp mới. Nếu tệp đã tồn tại, dữ liệu cũ sẽ bị ghi đè bằng dữ liệu mới. Write & Read (‘w+’)Mở tệp cho phép cả đọc và ghi. Vị trí con trỏ tệp ở vị trí đầu của tệp. Nếu tệp không tồn tại, sẽ tự động tạo tệp mới. Nếu tệp đã tồn tại, dữ liệu cũ sẽ bị ghi đè bằng dữ liệu mới. Append Only (‘a’)Mở tệp cho phép ghi. Tập tin sẽ được tạo mới nếu không tồn tại. Con trỏ tệp sẽ ở cuối tệp nên sẽ tiếp tục ghi dữ liệu vào cuối nếu dữ liệu ban đầu đã bị cấm. Append and Read (‘a+’)Mở tệp cho phép ghi và đọc. Tập tin sẽ được tạo mới nếu không tồn tại. Con trỏ tệp sẽ ở cuối tệp nên sẽ tiếp tục ghi dữ liệu vào cuối nếu dữ liệu ban đầu đã bị cấmMở tệp trong PythonĐể mở tệp trong Python, chúng tôi không cần phải nhập thêm thư viện nào cả, chúng tôi sẽ sử dụng hàm 1 file_object = mở(r'đường_dẫn_tới_file', 'mode') Lưu ý. Ký tự r trước đường dẫn đến tệp giúp bỏ qua các ký tự đặc biệt của chuỗi trong Python. Không có giới hạn, nếu không có ký tự Ví dụ 1 2 3 4 5 6 7 8 9 10 # open file to read, mode = 'r' rf = mở('data. txt', 'r') # or rf = mở('data. txt')
# open file to write wf = mở('data. txt', 'w')
# open file to write to end wf = mở('data. txt', 'a') Đóng tệp trong PythonSử dụng hàm Ví dụ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # open file to read, mode = 'r' rf = mở('data. txt', 'r') # or rf = mở('data. txt') # đóng hồ sơ rf. đóng()
# open file to write wf = mở('data. txt', 'w') # đóng hồ sơ wf. đóng()
# open file to write to end wf = mở('data. txt', 'a') # đóng hồ sơ wf. đóng() Một cách linh hoạt hơn (nên sử dụng) khi làm việc với tệp mà không cần phải lo khi đóng tệp nào. Vui lòng sử dụng từ khóa 1 2 3 4 5 # Python will auto close file for you với mở('/home/user/data. txt', 'r') as fp: # làm smt
# tiếp tục các khối lệnh khác Đọc tệp trong PythonPython cung cấp cho bạn 3 cách khác nhau để đọc nội dung từ tập tin. Mình sẽ đi trực tiếp vào ví dụ để các bạn có thể hiểu & áp dụng được ngay Đọc toàn bộ tập tin chuỗiSử dụng hàm 1 2 3 4 5 với mở('dữ liệu. txt') như rf. nội dung = rf. đọc() in(nội dung) nội dung = nội dung + "\n\nTừ in(nội dung) Kết quả nhận được (cũng chính là tệp nội dung 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Cố định size Can only known size during khai báo Thay đổi kích thước trong quá trình thêm/ xóa phần tử Kích thước tối đa phụ thuộc vào bộ nhớ typedef was used todefine a data type in C malloc là hàm phát bộ nhớ của C. Với C++ chúng ta sử dụng new sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc Cố định size Can only known size during khai báo Thay đổi kích thước trong quá trình thêm/ xóa phần tử Kích thước tối đa phụ thuộc vào bộ nhớ typedef was used todefine a data type in C malloc là hàm phát bộ nhớ của C. Với C++ chúng ta sử dụng new sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc
Từ LTKK với tình yêu Đọc từng dòng của tệpSử dụng hàm 1 2 3 4 5 6 7 với mở('dữ liệu. txt') như rf. dòng = rf. đường đọc() chỉ mục = 1 while dòng. in('Dòng {}. {}'. định dạng(chỉ mục, dòng)) chỉ mục += 1 dòng = rf. đường đọc() Kết quả 1 2 3 4 5 6 7 8 9 10 11 12 13 Dòng 1. Cố định size
Dòng 2. Can only known size during khai báo
dòng 3. Thay đổi kích thước trong quá trình thêm/ xóa phần tử
dòng 4. Kích thước tối đa phụ thuộc vào bộ nhớ
dòng 5. typedef was used todefine a data type in C
dòng 6. malloc là hàm phát bộ nhớ của C. Với C++ chúng ta sử dụng new
dòng 7. sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc Hàm Đọc toàn bộ tập tin ra danh sáchVẫn là đọc toàn bộ tệp nhưng hàm 1 2 3 4 với mở('dữ liệu. txt') như rf. dòng = rf. đường đọc() cho idx, dòng in enumerate(lines): in(idx, line) Kết quả 1 2 3 4 5 6 7 8 9 10 11 12 13 0 Cố định kích thước
1 Can just known size during khai báo
2 Kích thước thay đổi trong quá trình thêm/ xóa phần tử
3 Kích thước tối đa phụ thuộc vào bộ nhớ
4 typedef được dùng để định nghĩa một kiểu dữ liệu trong C
5 malloc là hàm phát bộ nhớ của C. Với C++ chúng ta sử dụng new
6 sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc Lưu ý. Bạn có thể sử dụng hàm Ghi file trong PythonĐể ghi tệp trong Python, chúng ta có thể sử dụng hàm 1 2 3 4 5 6 7 8 9 10 11 12 văn bản = [ "0 Kích thước cố định", "1 Can just known size in when khai báo", "2 Kích thước thay đổi trong quá trình bổ sung/ xóa phần tử", "3 Kích thước tối đa phụ thuộc vào bộ nhớ", "4 typedef được sử dụng để định nghĩa một kiểu dữ liệu trong C. ", "5 malloc là hàm cấp phát bộ nhớ của C. Với C++ chúng ta sử dụng new", "6 sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc" ] với mở('dữ liệu. txt', 'w') as wf: đối với văn bản trong văn bản: wf. viết(văn bản + ') hoặc 1 2 3 4 5 6 7 8 9 10 11 văn bản = [ "0 Kích thước cố định", "1 Can just known size in when khai báo", "2 Kích thước thay đổi trong quá trình bổ sung/ xóa phần tử", "3 Kích thước tối đa phụ thuộc vào bộ nhớ", "4 typedef được sử dụng để định nghĩa một kiểu dữ liệu trong C. ", "5 malloc là hàm cấp phát bộ nhớ của C. Với C++ chúng ta sử dụng new", "6 sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc" ] với mở('dữ liệu. txt', 'w') as wf: wf. dòng viết(văn bản) Lưu ý Hàm 1 0 Kích thước cố định1 Cần chỉ định kích thước khi khai báo2 Kích thước thay đổi trong quá trình thêm/xóa phần tử3 Kích thước tối đa phụ thuộc vào bộ nhớ4 typedef được sử dụng để định nghĩa một kiểu dữ liệu trong C. 5 malloc là hàm phát bộ nhớ của C. Với C++ chúng ta sử dụng new6 sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc Ghi dữ liệu vào cuối tập tinChúng ta chỉ cần thay đổi chế độ từ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 văn bản = [ "0 Kích thước cố định", "1 Can just known size in when khai báo", "2 Kích thước thay đổi trong quá trình bổ sung/ xóa phần tử", "3 Kích thước tối đa phụ thuộc vào bộ nhớ", "4 typedef được sử dụng để định nghĩa một kiểu dữ liệu trong C. ", "5 malloc là hàm cấp phát bộ nhớ của C. Với C++ chúng ta sử dụng new", "6 sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc" ] với mở('dữ liệu. txt', 'w') as wf: đối với văn bản trong văn bản: wf. viết(văn bản + ')
với mở('dữ liệu. txt') như wr. in("Số dòng. ", len(wr. đường đọc()))
# Ghi tập tin vào cuối với mở('dữ liệu. txt', 'a') as wf: wf. viết('=> Từ LTKK với tình yêu')
với mở('dữ liệu. txt') như wr. văn bản = wr. đường đọc() in("Số dòng. ", len(văn bản)) in(văn bản) Kết quả 1 2 3 Số dòng. 7 Số dòng. số 8 ['0 Kích thước cố định\n', '1 Cần chỉ định kích thước khi khai báo\n', '2 Kích thước thay đổi trong quá trình thêm/ xóa phần tử\n', '3 Kích thước tối đa . \n', '5 malloc là hàm cấp phát bộ nhớ của C. Với C++ chúng ta sử dụng new\n', '6 sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc\n', '=> From LTKK with love'] [sc_] Đọc ghi JSON từ tệpTrong phần này, chúng ta sẽ làm việc với tệp JSON sử dụng ngôn ngữ Python. Giả sử chúng ta có tệp JSON như sau Cách đọc tệp JSON1 2 3 4 5 6 nhập json
với mở('khách hàng. json') as wr. khách hàng = json. tải(wr) dành cho khách hàng trong khách hàng: in(khách hàng, type(customer)) Kết quả 1 2 {'id': 1, 'email': '[email protected]', 'first': 'Torrey', 'last': 'Veum', 'company': 'Hilll, Mayert and Wolf', 'created_at': '2014-12-25T04:06:27.981Z', 'country': 'Switzerland'} {'id': 2, 'email': '[email protected]', 'first': 'Micah', 'last': 'Sanford', 'company': 'Stokes-Reichel', 'created_at': '2014-07-03T16:08:17.044Z', 'country': "Democratic People's Republic of Korea"} Ghi từ điển dữ liệu ra tệp JSON1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 nhập json
khách hàng = [ { "id". 1, "email". "[email được bảo vệ]", "đầu tiên". "Torrey", "cuối cùng". "Veum", "công ty". "Hilll, Mayert và Wolf", "created_at". "2014-12-25T04. 06. 27. 981Z", "quốc gia". "Thụy Sĩ" }, { "id". 2, "email". "[email được bảo vệ]", "đầu tiên". "Mi-ca", "cuối cùng". "Sanford", "công ty". "Stokes-Reichel", "created_at". "2014-07-03T16. 08. 17. 044Z", "quốc gia". "Cộng hòa Dân chủ Nhân dân Triều Tiên" } ]
với mở('khách hàng. json', 'w') as wr: json. kết xuất(khách hàng, wr) Lưu ý
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 nhập json
khách hàng = [ { "id". 1, "email". "[email được bảo vệ]", "đầu tiên". "Hiếu", "cuối cùng". "Nguyễn Văn", "công ty". "Zalo", "created_at". "2014-12-25T04. 06. 27. 981Z", "quốc gia". "Việt Nam" }, { "id". 2, "email". "[email được bảo vệ]", "đầu tiên". "Mi-ca", "cuối cùng". "Sanford", "công ty". "Stokes-Reichel", "created_at". "2014-07-03T16. 08. 17. 044Z", "quốc gia". "Cộng hòa Dân chủ Nhân dân Triều Tiên" } ]
với mở('khách hàng. json', 'w') as wr: json. kết xuất(khách hàng, wr, ensure_ascii=False, indent=2) Kết quả
Như vậy, bài viết đã trình bày các nội dung cần thiết để bạn đọc về nội dung đọc tệp ghi trong Python. Với những kiến thức căn bản này, bạn hoàn toàn có thể sử dụng câu trả lời yêu cầu trong công việc rồi đấy. Chúc các bạn học tập tốt Tham gia nhóm Lập Trình Không Khó nhé. https. //www. Facebook. com/groups/1023125804557712/
Nguyễn Văn Hiếu Sáng lập cộng đồng Lập Trình Không Khó với mong muốn giúp đỡ các bạn trẻ trên con đường trở thành những lập trình viên tương lai. Tất cả những gì tôi viết ra đây chỉ đơn giản là cơ sở thích ghi lại các kiến thức mà tôi tích lũy được |