Hãy đi thẳng vào một ví dụ mã. Giả sử bạn có một tệp có tên ví dụ. txt trong thư mục hiện tại. Nếu không, chỉ cần tạo một cái, sau đó tô nó bằng những dòng này và lưu nó Show
Đây là một đoạn mã Python ngắn để mở tệp đó và in nội dung của nó ra màn hình – lưu ý rằng mã Python này phải được chạy trong cùng thư mục chứa tệp 1
Điều đó có vẻ quá phức tạp?
Đây là cách đọc tệp đó, từng dòng một, sử dụng vòng lặp for
(Ghi chú. Nếu bạn đã nhận được FileNotFoundError – điều đó hầu như được mong đợi. Hãy đọc tiếp. ) Vẫn có vẻ quá phức tạp? . Không chỉ vậy, chúng tôi còn phải đóng tệp theo cách thủ công Bây giờ chúng ta hãy thực hiện từng bước này Để mở một tệp, chúng tôi chỉ cần sử dụng phương thức 2 và chuyển vào, làm đối số đầu tiên, tên tệp
Điều đó có vẻ dễ dàng, vì vậy hãy chuyển sang một số lỗi phổ biến Cách lộn xộn khi mở tệpĐây có thể là lỗi phổ biến nhất mà bạn sẽ gặp phải khi cố mở một tệp
Trên thực tế, tôi đã thấy các sinh viên lãng phí hàng chục giờ để cố vượt qua thông báo lỗi này, bởi vì họ không dừng lại để đọc nó. Vì vậy, đọc nó. 3 có nghĩa là gì?Hãy thử đặt dấu cách nơi viết hoa xảy ra
Bạn sẽ gặp lỗi này vì bạn đã cố mở một tệp đơn giản là không tồn tại. Đôi khi, đó chỉ là một lỗi đánh máy đơn giản, cố gắng 2 một tệp có tên 5 nhưng lại vô tình viết sai chính tả thành 6Nhưng thường xuyên hơn, đó là vì bạn biết một tệp tồn tại dưới một tên tệp nhất định, chẳng hạn như 5 – nhưng làm cách nào để mã Python của bạn biết tệp đó ở đâu? Đó là một câu hỏi khá phức tạp. Nhưng bước đầu tiên để không lãng phí thời gian của bạn là nếu bạn thấy lỗi này, hãy dừng mọi việc bạn đang làm. Đừng điều chỉnh vòng lặp for phức tạp của bạn. Đừng cố cài đặt thư viện Python mới. Đừng khởi động lại máy tính của bạn, sau đó chạy lại tập lệnh để xem lỗi có tự khắc phục được không Lỗi 3 xảy ra do bạn không biết vị trí thực sự của tệp trên máy tính của mình. Hoặc, ngay cả khi bạn làm như vậy, bạn cũng không biết cách nói cho chương trình Python của mình biết nó đang ở đâu. Đừng cố sửa các phần khác trong mã của bạn không liên quan đến việc chỉ định tên tệp hoặc đường dẫnCách sửa lỗi FileNotFoundErrorĐây là một sửa chữa chắc chắn. đảm bảo tệp thực sự tồn tại Hãy bắt đầu lại từ đầu bằng cách mắc lỗi. Trong vỏ hệ thống của bạn (tôi. e. Terminal), thay đổi thư mục Desktop của bạn
Bây giờ, hãy chạy ipython
Và bây giờ bạn đang ở trong trình thông dịch Python tương tác, hãy thử mở một tên tệp mà bạn biết là không tồn tại trên Màn hình của mình, rồi tận hưởng thông báo lỗi
0Bây giờ hãy tạo thủ công tệp trên Bàn làm việc của bạn, sử dụng Sublime Text 3 hoặc bất cứ thứ gì bạn muốn. Thêm một số văn bản vào nó, sau đó lưu nó 1Hãy tự mình xem và thấy rằng tệp này thực sự tồn tại trong thư mục Máy tính để bàn của bạn OK, bây giờ hãy quay lại trình bao Python tương tác của bạn (tôi. e. ipython), cái mà bạn đã mở sau khi chuyển sang thư mục Desktop (i. e. 0). Chạy lại lệnh 2 đó, lệnh dẫn đến FileNotFoundError
Hy vọng rằng, bạn không nên nhận được một lỗi Nhưng đối tượng mà biến 2 trỏ tới là gì? 3Và đó là gì? . e. 5Sử dụng tính năng tự động hoàn thành Tab (i. e. gõ vào 6) để có danh sách các phương thức và thuộc tính hiện có cho đối tượng 2 4Chà, chúng ta có thể làm được nhiều việc hơn với các tệp thay vì chỉ 8 từ chúng. Nhưng bây giờ hãy tập trung vào việc đọcGiả sử biến 2 trỏ đến một số loại đối tượng tệp, đây là cách bạn đọc từ nó 5Có gì trong biến 0 đó? 6Nó chỉ là một chuỗi. Điều đó có nghĩa là tất nhiên chúng ta có thể in nó ra 7Hoặc đếm số ký tự 8Hoặc in ra bằng chữ in hoa toàn bộ 9Và đó là tất cả những gì cần đọc từ một tệp đã được mở Bây giờ vào những sai lầm Làm thế nào để lộn xộn khi đọc từ một tập tinĐây là một lỗi rất, rất phổ biến 0Đầu ra lỗi 1Hãy lưu ý cẩn thận rằng đây không phải là FileNotFoundError. Đó là AttributeError – phải thừa nhận là không rõ lắm – nhưng hãy đọc phần tiếp theo 2Thông báo lỗi đến điểm. đối tượng 5 – tôi. e. một chuỗi ký tự, e. g. một cái gì đó như 3 không có thuộc tính 4Xem lại mã bị lỗi 0Nếu 5 chỉ vào "ví dụ. txt", thì 5 chỉ đơn giản là một đối tượng 5Nói cách khác, tên tệp không phải là đối tượng tệp. Đây là một ví dụ rõ ràng hơn về mã lỗi 4Và để đánh bại quan điểm về cái đầu 5Tại sao đây là một sai lầm phổ biến như vậy? . Giao diện đồ họa làm xáo trộn quy trình – và vì lý do chính đáng. Ai quan tâm chuyện gì đang xảy ra miễn là tệp của tôi mở ra khi tôi nhấp đúp vào tệp Thật không may, chúng tôi phải quan tâm khi cố gắng đọc tệp theo chương trình. Mở một tệp là một hoạt động rời rạc từ việc đọc nó
Một lần nữa, đây là mã, theo kiểu dài dòng hơn một chút 6Đối tượng tệp cũng có phương thức 1, phương thức này chính thức dọn sạch sau khi tệp được mở và cho phép các chương trình khác truy cập tệp đó một cách an toàn. Một lần nữa, đó là một chi tiết cấp thấp mà bạn không bao giờ nghĩ đến trong điện toán hàng ngày. Trên thực tế, đó là điều mà bạn có thể sẽ quên trong ngữ cảnh lập trình, vì việc không đóng tệp sẽ không tự động phá vỡ bất kỳ thứ gì (ít nhất là cho đến khi chúng ta bắt đầu thực hiện các loại thao tác tệp phức tạp hơn nhiều…). Thông thường, ngay sau khi tập lệnh kết thúc, mọi tệp chưa được đóng sẽ tự động bị đóngTuy nhiên, tôi thích đóng tệp một cách rõ ràng - không chỉ để đảm bảo an toàn - mà còn giúp củng cố khái niệm về đối tượng tệp đó Một trong những lợi thế của việc đi sâu vào các chi tiết cấp thấp hơn của việc mở và đọc từ các tệp là giờ đây chúng tôi có khả năng đọc các tệp theo từng dòng, thay vì một đoạn lớn. Một lần nữa, để đọc các tệp dưới dạng một khối nội dung khổng lồ, hãy sử dụng phương thức 8 7Bây giờ nó dường như không phải là một vấn đề lớn như vậy, nhưng đó là bởi vì 1 có thể chỉ chứa một vài dòng. Nhưng khi chúng tôi xử lý các tệp lớn – như cả 3. 3 triệu hồ sơ của tất cả những người đã quyên góp hơn 200 đô la cho một U. S. ủy ban chiến dịch tranh cử tổng thống năm 2012 hoặc tất cả những người đã từng đến thăm Nhà Trắng – việc mở và đọc tất cả tệp cùng một lúc sẽ chậm hơn đáng kể. Và nó thậm chí có thể làm hỏng máy tính của bạnNếu bạn thắc mắc tại sao phần mềm bảng tính, chẳng hạn như Excel, có giới hạn số hàng (khoảng 1.000.000), thì đó là vì hầu hết người dùng muốn thao tác trên một tệp dữ liệu cùng một lúc. Tuy nhiên, nhiều tệp dữ liệu thú vị quá lớn đối với điều đó. Chúng ta sẽ gặp những tình huống đó sau trong quý Hiện tại, đây là cách đọc từng dòng thường trông như thế nào
Bởi vì mỗi dòng trong một tệp văn bản có một ký tự xuống dòng (được biểu thị là 4 nhưng thường là "không nhìn thấy"), việc gọi hàm print() sẽ tạo đầu ra cách dòng kép, bởi vì print() thêm một dòng mới vào nội dung mà nó xuất ra (i. e. nghĩ lại chương trình 5 ban đầu của bạn)Để loại bỏ hiệu ứng đó, hãy gọi phương thức 6, thuộc về đối tượng 5 và loại bỏ các ký tự khoảng trắng ở bên trái và bên phải của chuỗi văn bản 9Và tất nhiên, bạn có thể làm mọi thứ trở nên ồn ào với chức năng ol' 8 9Đó là nó cho bây giờ. Chúng tôi chưa đề cập đến cách ghi vào một tệp (đây là một thao tác nguy hiểm hơn nhiều) – tôi để dành phần đó cho một bài học riêng. Nhưng cũng đủ biết rằng khi xử lý tệp với tư cách là một lập trình viên, chúng ta phải rõ ràng và cụ thể hơn rất nhiều trong các bước Tệp đã đọc () trong Python là gì?Phương thức đọc tệp Python()
. Mặc định là -1 có nghĩa là toàn bộ tập tin. returns the specified number of bytes from the file. Default is -1 which means the whole file.
Làm cách nào để nhập tệp txt bằng Python?Nhập dữ liệu bằng Python . Tệp Txt (. txt) nhập numpy dưới dạng np. . Tệp Csv (. csv) nhập gấu trúc dưới dạng pd. . Tập tin dưa chua (. pkl) nhập picklewith open('data. pkl', 'rb') dưới dạng tệp. . Tệp Excel (. xlsx ) nhập gấu trúc dưới dạng pdfile = 'datafile. dữ liệu xlsx' = pd. ExcelFile(tệp)in(dữ liệu. sheet_names) |