Các tệp Python là văn bản hay nhị phân?
Chúng tôi cung cấp nhiều lựa chọn các khóa học từ các trường đại học và tổ chức văn hóa hàng đầu từ khắp nơi trên thế giới. Chúng được cung cấp từng bước một và có thể truy cập được trên thiết bị di động, máy tính bảng và máy tính để bàn, vì vậy bạn có thể phù hợp với việc học xung quanh cuộc sống của mình Show
Chúng tôi tin rằng việc học phải là một trải nghiệm xã hội, thú vị, vì vậy các khóa học của chúng tôi mang đến cơ hội thảo luận những gì bạn đang học với những người khác trong quá trình học, giúp bạn có những khám phá mới mẻ và hình thành những ý tưởng mới Tìm hiểu thêm về cách FutureLearn đang thay đổi cách tiếp cận giáo dục Trong tệp văn bản, văn bản, ký tự, số được lưu trữ một ký tự trên mỗi byte i. e. 32667 chiếm 5 byte mặc dù nó chiếm 2 byte trong bộ nhớ Trong tệp nhị phân, dữ liệu được lưu trữ ở định dạng nhị phân và mỗi dữ liệu sẽ chiếm cùng một số byte trên đĩa khi nó chiếm trong bộ nhớ Trong tệp văn bản, ký tự xuống dòng được chuyển thành ký tự xuống dòng/nạp dòng trước khi được ghi vào đĩa Trong tệp nhị phân, việc chuyển đổi dòng mới thành ký tự xuống dòng và nguồn cấp dữ liệu không diễn ra Các tệp văn bản được sử dụng để lưu trữ dữ liệu thân thiện hơn với người dùng Các tệp nhị phân được sử dụng để lưu trữ dữ liệu gọn hơn Trong tệp văn bản, một ký tự đặc biệt có giá trị ASCII là 26 được chèn sau ký tự cuối cùng để đánh dấu kết thúc tệp Trong tệp nhị phân không có ký tự nào như vậy. Các tệp theo dõi phần cuối của tệp từ số lượng ký tự hiện có (Nhà tài trợ) Bắt đầu học Python với hướng dẫn Giới thiệu về Python miễn phí của DataCamp. Tìm hiểu Khoa học dữ liệu bằng cách hoàn thành các thử thách mã hóa tương tác và xem video của các chuyên gia hướng dẫn. Bắt đầu bây giờ Cập nhật ngày 07 tháng 1 năm 2020 Trong bài đăng này, chúng ta sẽ tìm hiểu cách đọc và ghi tệp bằng Python Làm việc với các tệp bao gồm ba bước sau
Hãy xem chi tiết từng bước Các loại tệpCó hai loại tập tin Tệp văn bản chỉ đơn giản là một tệp lưu trữ các chuỗi ký tự bằng mã hóa như utf-8, latin1, v.v. , trong khi trong trường hợp dữ liệu tệp nhị phân được lưu trữ ở định dạng giống như trong Bộ nhớ máy tính Dưới đây là một số ví dụ về tệp văn bản và tệp nhị phân tệp văn bản. Mã nguồn Python, tệp HTML, tệp văn bản, tệp đánh dấu, v.v. tập tin nhị phân. tập tin thực thi, hình ảnh, âm thanh, vv Điều quan trọng cần lưu ý là bên trong đĩa, cả hai loại tệp đều được lưu trữ dưới dạng chuỗi 1 và 0. Sự khác biệt duy nhất là khi một tệp văn bản được mở, dữ liệu được giải mã trở lại bằng cách sử dụng cùng một sơ đồ mã hóa mà chúng đã được mã hóa trong. Tuy nhiên, trong trường hợp tệp nhị phân, điều đó sẽ không xảy ra Mở tệp - hàm open()Hàm tích hợp >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>>7 được sử dụng để mở tệp. Cú pháp của nó như sau open(filename, mode) -> file object Khi thành công, >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>>7 trả về một đối tượng tệp. Khi thất bại, nó tăng >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>>9 hoặc nó là phân lớp Đối số Mô tả_______4_______0Đường dẫn tuyệt đối hoặc tương đối của tệp sẽ được mở. Chế độ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 231(tùy chọn) là một chuỗi đề cập đến chế độ xử lý (i. e đọc, viết, chắp thêm, v.v.;) và loại tệp Sau đây là các giá trị có thể có của chế độ Chế độ Mô tả 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 232Mở tệp để đọc (mặc định). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 233Mở tệp để viết. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 234Mở tệp ở chế độ nối thêm i. e thêm dữ liệu mới vào cuối file. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 235Mở tệp để đọc và ghi cả_______4_______6Chỉ mở tệp để ghi nếu nó chưa tồn tại Chúng tôi cũng có thể nối thêm 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 237 hoặc 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238 vào chuỗi chế độ để cho biết loại tệp mà chúng tôi sẽ làm việc với. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 237 được sử dụng cho tệp văn bản và 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238 cho tệp nhị phân. Nếu không được chỉ định, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 237 được giả định theo mặc định 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 231 là tùy chọn, nếu không được chỉ định thì tệp sẽ được mở dưới dạng tệp văn bản chỉ để đọc Điều này có nghĩa là ba cuộc gọi sau tới >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>>7 là tương đương # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt') Lưu ý rằng trước khi bạn có thể đọc tệp, tệp đó phải tồn tại, nếu không thì >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>>7 sẽ tăng ngoại lệ >>> >>> f = open("poem.txt", "r") >>> >>> f.read(4) # read first 4 characters 'The ' >>> >>> f.readline() # read until the end of the line is reached 'caged bird sings\n' >>> >>> f.readline() # read the second line 'with a fearful trill\n' >>> >>> f.readline() # read the third line 'of things unknown\n' >>> >>> f.readline() # read the fourth line 'but longed for still' >>> >>> f.readline() # EOF reached '' >>> >>> f.close() >>>5. Tuy nhiên, nếu bạn mở một tệp để ghi (sử dụng chế độ như 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 233, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 234 hoặc 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 235), Python sẽ tự động tạo tệp cho bạn. Nếu tệp đã tồn tại thì nội dung của nó sẽ bị xóa. Nếu bạn muốn ngăn điều đó, hãy mở tệp ở chế độ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 236 Đóng tệp - phương thức close()Khi bạn làm việc xong với tệp, bạn nên đóng tệp. Mặc dù, tệp sẽ tự động đóng khi chương trình kết thúc nhưng vẫn nên làm như vậy một cách rõ ràng. Không thể đóng tệp trong một chương trình lớn có thể gây ra sự cố và thậm chí có thể khiến chương trình bị lỗi Để đóng tệp, gọi phương thức 1 2 3 4 5 6 7 8 9 10 110 của đối tượng tệp. Đóng tệp sẽ giải phóng các tài nguyên được liên kết với nó và xóa dữ liệu trong bộ đệm vào đĩa Con trỏ tệpKhi bạn mở một tệp thông qua phương thức >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>>7. Hệ điều hành liên kết một con trỏ trỏ đến một ký tự trong tệp. Con trỏ tệp xác định nơi diễn ra thao tác đọc và ghi. Ban đầu, con trỏ tệp chỉ vào đầu tệp và tăng dần khi chúng ta đọc và ghi dữ liệu vào tệp. Ở phần sau của bài đăng này, chúng ta sẽ xem cách xác định vị trí hiện tại của con trỏ tệp và sử dụng nó để truy cập ngẫu nhiên các phần của tệp Đọc tệp bằng read(), readline() và readlines()Để đọc dữ liệu, đối tượng tệp cung cấp các phương thức sau MethodArgument 1 2 3 4 5 6 7 8 9 10 112Đọc và trả về 1 2 3 4 5 6 7 8 9 10 113 byte trở xuống (nếu không có đủ ký tự để đọc) từ tệp dưới dạng chuỗi. Nếu 1 2 3 4 5 6 7 8 9 10 113 không được chỉ định, nó sẽ đọc toàn bộ tệp dưới dạng một chuỗi và trả về. 1 2 3 4 5 6 7 8 9 10 115Đọc và trả về các ký tự cho đến khi đạt đến cuối dòng dưới dạng chuỗi. 1 2 3 4 5 6 7 8 9 10 116Đọc và trả về tất cả các dòng dưới dạng danh sách các chuỗi Khi đến cuối tệp (EOF), các phương thức 1 2 3 4 5 6 7 8 9 10 117 và 1 2 3 4 5 6 7 8 9 10 115 trả về một chuỗi trống, trong khi đó, ______25_______6 trả về một danh sách trống ( >>> >>> f = open("poem.txt", "r") >>> >>> f.readlines() ['The caged bird sings\n', 'with a fearful trill\n', 'of things unknown\n', 'but longed for still\n'] >>> >>> f.readlines() # EOF reached [] >>> >>> f.close() >>>0) Dưới đây là một số ví dụ bài thơ. txt The caged bird sings with a fearful trill of things unknown but longed for still ví dụ 1. Sử dụng 1 2 3 4 5 6 7 8 9 10 117 1 2 3 4 5 6 7 8 9 10 11 12 13 14 >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>> ví dụ 2. Sử dụng 1 2 3 4 5 6 7 8 9 10 115 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 >>> >>> f = open("poem.txt", "r") >>> >>> f.read(4) # read first 4 characters 'The ' >>> >>> f.readline() # read until the end of the line is reached 'caged bird sings\n' >>> >>> f.readline() # read the second line 'with a fearful trill\n' >>> >>> f.readline() # read the third line 'of things unknown\n' >>> >>> f.readline() # read the fourth line 'but longed for still' >>> >>> f.readline() # EOF reached '' >>> >>> f.close() >>> ví dụ 3. Sử dụng 1 2 3 4 5 6 7 8 9 10 116 1 2 3 4 5 6 7 8 9 10 11 >>> >>> f = open("poem.txt", "r") >>> >>> f.readlines() ['The caged bird sings\n', 'with a fearful trill\n', 'of things unknown\n', 'but longed for still\n'] >>> >>> f.readlines() # EOF reached [] >>> >>> f.close() >>> Đọc tệp theo khốiCác phương thức 1 2 3 4 5 6 7 8 9 10 117 (không đối số) và 1 2 3 4 5 6 7 8 9 10 116 đọc tất cả dữ liệu vào bộ nhớ cùng một lúc. Vì vậy, đừng sử dụng chúng để đọc các tệp lớn Cách tiếp cận tốt hơn là đọc tệp theo từng đoạn bằng cách sử dụng 1 2 3 4 5 6 7 8 9 10 117 hoặc đọc từng dòng tệp bằng cách sử dụng 1 2 3 4 5 6 7 8 9 10 115, như sau Thí dụ. Đọc tệp theo khối 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')0 Ví dụ. Đọc từng dòng tệp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')2 Thay vì sử dụng các phương thức 1 2 3 4 5 6 7 8 9 10 117 (có đối số) hoặc 1 2 3 4 5 6 7 8 9 10 115, bạn cũng có thể sử dụng đối tượng tệp để lặp lại nội dung của tệp mỗi lần một dòng 1 2 3 4 5 6 7 8 9 10 11 # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')4 Mã này tương đương với ví dụ trước nhưng ngắn gọn hơn, dễ đọc và dễ gõ hơn cảnh báo Hãy cẩn thận với phương pháp 1 2 3 4 5 6 7 8 9 10 115, nếu bạn không may mở một tệp lớn mà không có bất kỳ dòng mới nào thì 1 2 3 4 5 6 7 8 9 10 115 không tốt hơn 1 2 3 4 5 6 7 8 9 10 117 (không có đối số). Điều này cũng đúng khi bạn sử dụng đối tượng tệp làm trình vòng lặp Viết dữ liệu bằng cách sử dụng write() và writelines()Để ghi dữ liệu, đối tượng tệp cung cấp hai phương thức sau MethodDescription 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 163Ghi chuỗi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 164 vào tệp và trả về số ký tự đã viết. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 165Ghi tất cả các chuỗi trong chuỗi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 164 vào tệp Dưới đây là các ví dụ # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')5 # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')6 Lưu ý rằng không giống như hàm 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 167, phương thức 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 168 không thêm ký tự xuống dòng ( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 169) ở cuối dòng. Nếu bạn muốn ký tự xuống dòng, bạn phải thêm ký tự đó theo cách thủ công, như sau # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')7 # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')8 Bạn cũng có thể thêm dòng mới vào dòng bằng hàm 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 167, như sau 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 The caged bird sings with a fearful trill of things unknown but longed for still0 Đây là một ví dụ về phương pháp # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')01 The caged bird sings with a fearful trill of things unknown but longed for still1 The caged bird sings with a fearful trill of things unknown but longed for still2 Phương thức # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')01 gọi nội bộ phương thức 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 168 The caged bird sings with a fearful trill of things unknown but longed for still3 Đây là một ví dụ khác mở tệp ở chế độ chắp thêm The caged bird sings with a fearful trill of things unknown but longed for still1 The caged bird sings with a fearful trill of things unknown but longed for still5 Giả sử tệp # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')04 rất quan trọng để sử dụng và chúng tôi không muốn nó bị ghi đè. Để ngăn điều đó, hãy mở tệp ở chế độ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 236 The caged bird sings with a fearful trill of things unknown but longed for still6 Chế độ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 236 chỉ mở tệp để ghi, nếu nó chưa tồn tại Buffering và FlushingBộ đệm là quá trình lưu trữ dữ liệu tạm thời trước khi nó được chuyển đến một vị trí mới Trong trường hợp tệp, dữ liệu không được ghi ngay vào đĩa mà được lưu trữ trong bộ nhớ đệm Cơ sở lý luận đằng sau việc này là việc ghi dữ liệu vào đĩa cần có thời gian thay vì ghi dữ liệu vào bộ nhớ vật lý. Hãy tưởng tượng một chương trình ghi dữ liệu mỗi khi phương thức 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 168 được gọi. Một chương trình như vậy sẽ rất chậm Khi chúng ta sử dụng bộ đệm, dữ liệu chỉ được ghi vào đĩa khi bộ đệm đầy hoặc khi phương thức 1 2 3 4 5 6 7 8 9 10 110 được gọi. Quá trình này được gọi là xả đầu ra. Bạn cũng có thể xóa đầu ra theo cách thủ công bằng cách sử dụng phương thức # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')09 của đối tượng tệp. Lưu ý rằng # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')09 chỉ lưu dữ liệu được đệm vào đĩa. Nó không đóng tập tin Phương thức >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>>7 cung cấp đối số thứ ba tùy chọn để kiểm soát bộ đệm. Để tìm hiểu thêm về nó, hãy truy cập tài liệu chính thức Đọc và ghi dữ liệu nhị phânViệc đọc và ghi tệp nhị phân được thực hiện bằng cách nối thêm 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238 vào chuỗi chế độ Trong Python 3, dữ liệu nhị phân được biểu diễn bằng một loại đặc biệt có tên là # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')13 Loại # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')13 đại diện cho một dãy số bất biến trong khoảng từ 0 đến 255 Hãy tạo một phiên bản nhị phân của bài thơ bằng cách đọc tệp # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')15 The caged bird sings with a fearful trill of things unknown but longed for still7 The caged bird sings with a fearful trill of things unknown but longed for still8 Lưu ý rằng việc lập chỉ mục một đối tượng # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')13 trả về một # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')17 Hãy viết bài thơ nhị phân của chúng ta trong một tệp mới The caged bird sings with a fearful trill of things unknown but longed for still9 Bài thơ nhị phân của chúng tôi bây giờ được ghi vào tập tin. Để đọc nó, hãy mở tệp ở chế độ # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')18 1 2 3 4 5 6 7 8 9 10 11 12 13 140 1 2 3 4 5 6 7 8 9 10 11 12 13 141 Điều quan trọng cần lưu ý là, trong trường hợp của chúng tôi, dữ liệu nhị phân có chứa các ký tự có thể in được, như bảng chữ cái, dòng mới, v.v. Tuy nhiên, đây sẽ không phải là trường hợp hầu hết thời gian. Điều đó có nghĩa là với dữ liệu nhị phân, chúng tôi không thể sử dụng một cách đáng tin cậy 1 2 3 4 5 6 7 8 9 10 115 và đối tượng tệp (dưới dạng trình lặp) để đọc nội dung của tệp vì có thể không có ký tự xuống dòng trong tệp. Cách tốt nhất để đọc dữ liệu nhị phân là đọc nó theo từng đoạn bằng phương pháp 1 2 3 4 5 6 7 8 9 10 117 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 143 Truy cập ngẫu nhiên bằng fseek() và ftell()Trước đó trong bài đăng này, chúng tôi đã biết rằng khi tệp được mở, hệ thống sẽ liên kết một con trỏ với nó, xác định vị trí sẽ diễn ra quá trình đọc hoặc ghi Cho đến nay chúng tôi đã đọc và ghi các tập tin một cách tuyến tính. Nhưng cũng có thể đọc và viết tại các vị trí cụ thể. Để đạt được điều này, đối tượng tệp cung cấp hai phương thức sau Phương thức Mô tả # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')21Trả về vị trí hiện tại của con trỏ tệp. # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')22Di chuyển con trỏ tệp đến # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')23 đã cho. # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')23 đề cập đến số byte và # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')25 xác định vị trí liên quan mà # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')23 sẽ di chuyển con trỏ tệp. Giá trị mặc định của # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')25 là 0, có nghĩa là phần bù sẽ di chuyển con trỏ tệp từ đầu tệp. Nếu wherece được đặt thành # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')28 hoặc # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')29, phần bù sẽ di chuyển con trỏ của tệp từ vị trí hiện tại hoặc từ cuối tệp, tương ứng Bây giờ chúng ta hãy lấy một số ví dụ 1 2 3 4 5 6 7 8 9 10 11 12 13 144 1 2 3 4 5 6 7 8 9 10 11 12 13 145 Sau khi đọc hết 5 ký tự, con trỏ tệp đang ở ký tự 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 234 (trong word # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')31). Vì vậy thao tác đọc (hoặc ghi) tiếp theo sẽ bắt đầu từ thời điểm này 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3 4 5 6 7 8 9 10 11 12 13 147 Bây giờ chúng tôi đã đến cuối tập tin. Lúc này ta có thể dùng phương thức # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')32 để tua con trỏ tệp về đầu tệp, như sau 1 2 3 4 5 6 7 8 9 10 11 12 13 148 Con trỏ tệp hiện đang ở đầu tệp. Tất cả các thao tác đọc và ghi từ bây giờ sẽ diễn ra lại từ đầu tệp 1 2 3 4 5 6 7 8 9 10 11 12 13 149 Để di chuyển con trỏ tệp từ 12 byte về phía trước từ vị trí hiện tại, hãy gọi # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')33 như sau >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>>0 Con trỏ tệp lúc này đang ở ký tự 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 234 (sau từ # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')35) nên thao tác đọc ghi sẽ diễn ra từ đó >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>>1 Chúng ta cũng có thể di chuyển con trỏ tệp về phía sau. Ví dụ: lệnh gọi sau tới ____18_______33 di chuyển con trỏ tệp về phía sau 13 byte so với vị trí hiện tại >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>>2 >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>>3 Giả sử chúng ta muốn đọc 16 byte cuối cùng của tệp. Để làm như vậy, hãy di chuyển con trỏ tệp về phía sau 16 byte so với cuối tệp >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>>4 Các giá trị của đối số # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')25 của # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')32 cũng được định nghĩa là hằng số trong mô-đun # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')39 ValueConstant # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')40 # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')41 # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')28 # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')43 # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')29 # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')45 với tuyên bốCâu lệnh with cho phép chúng ta tự động đóng tệp sau khi làm việc xong với nó. Cú pháp của nó như sau >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>>5 Các câu lệnh bên trong câu lệnh # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')35 phải được thụt lề bằng nhau giống như vòng lặp for, nếu không thì ngoại lệ # open file todo.md for reading in text mode open('todo.md') open('todo.md', 'r') open('todo.md', 'rt')47 sẽ được nâng lên Đây là một ví dụ >>> >>> f = open("poem.txt", "r") >>> >>> f.read(3) # read the first 3 characters 'The' >>> >>> f.read() # read the remaining characters in the file. ' caged bird sings\nwith a fearful trill\nof things unknown\nbut longed for still\n' >>> >>> f.read() # End of the file (EOF) is reached '' >>> >>> f.close() >>>6 Hướng dẫn khác (Nhà tài trợ) Trang web này được hỗ trợ rộng rãi bởi DataCamp. DataCamp cung cấp Hướng dẫn Python tương tác trực tuyến cho Khoa học dữ liệu. Tham gia cùng hơn một triệu người học khác và bắt đầu học Python cho khoa học dữ liệu ngay hôm nay Tệp Python có phải là tệp nhị phân không?Python có các công cụ để làm việc với tệp nhị phân . Các tệp nhị phân sử dụng các chuỗi kiểu byte. Điều này có nghĩa là khi đọc dữ liệu nhị phân từ một tệp, một đối tượng kiểu byte được trả về. Tệp nhị phân được mở bằng hàm open(), có tham số chế độ chứa ký tự 'b'.
Tệp Python có phải là tệp văn bản không?Tệp trong Python được phân loại là văn bản hoặc nhị phân và sự khác biệt giữa hai loại tệp là rất quan trọng. Các tệp văn bản được cấu trúc dưới dạng một chuỗi các dòng, trong đó mỗi dòng bao gồm một chuỗi ký tự. Đây là những gì bạn gọi là mã hoặc cú pháp.
Python có sử dụng nhị phân không?Trong Python, việc sử dụng số nhị phân mất nhiều bước hơn so với sử dụng số thập phân . Khi bạn nhập số nhị phân, hãy bắt đầu bằng tiền tố '0b' (số 0 theo sau là dấu b rất nhỏ). 0b11 giống như nhị phân 11, tương đương với số thập phân 3. Nó không khó, nhưng nó là công việc phụ.
Chế độ nhị phân so với văn bản trong Python là gì?Khi chúng tôi cố gắng đọc hoặc ghi tệp trong chương trình của mình, thường có hai chế độ để sử dụng. Chế độ văn bản, thường theo mặc định và chế độ nhị phân. Rõ ràng, ở chế độ văn bản, chương trình ghi dữ liệu vào tệp dưới dạng ký tự văn bản và ở chế độ nhị phân, chương trình ghi dữ liệu vào tệp dưới dạng bit 0/1 . |