Có nhiều cách để chúng ta có thể Ghi đè lên một tệp trong Python. Chúng tôi sẽ sử dụng một số phương pháp đơn giản để ghi đè lên một tệp trong Python
Ghi đè tệp bằng phương thức seek[] và truncate[]
sử dụng tập tin. tìm kiếm [] và tập tin. truncate[] chúng ta có thể ghi đè lên tệp Python
Trước tiên, chúng ta cần mở tệp mà chúng ta muốn ghi đè lên tệp, nhưng chúng ta chỉ cần mở tệp ở chế độ đọc và bằng cách sử dụng phương thức seek[] được sử dụng để thay đổi vị trí của xử lý tệp thành một vị trí đã chỉ định
Tiếp theo, ghi dữ liệu mới và sau đó sử dụng phương thức truncate[] để xóa dữ liệu cũ
Mã Python để ghi đè lên một tập tin
with open['myFolder/myfile.txt','r+'] as myfile: data = myfile.read[] myfile.seek[0] myfile.write['newData'] myfile.truncate[]
Bằng cách triển khai đoạn mã trên, chúng ta có thể ghi đè lên tệp bằng Python bằng cách sử dụng các phương thức truncate[] và seek[]
Ghi đè tệp bằng phương thức open[] và write[] trong Python
Tương tự như vậy, phương thức truncate[] và seek[] chúng ta cũng có thể ghi đè lên một tệp bằng cách sử dụng các phương thức open[] và write[]
Phương thức open[] bao gồm hai tham số đầu tiên là một tệp, làm đầu vào, hơn nữa được gọi là đường dẫn trả về một đối tượng tệp làm đầu ra
Tham số thứ hai là chế độ, có mở tệp ở chế độ đọc 'r', chế độ ghi 'w', chế độ nối thêm 'a', v.v.
Thứ nhất, nếu chúng ta muốn đọc tệp và sau đó ghi đè lên nó, chúng ta cần mở tệp ở chế độ đọc và sau đó ghi đè lên
Mã Python sử dụng phương pháp này
with open['downloads/myfile.txt', "r"] as myfile: data = myfilef.read[] with open['downloads/myfile.txt', "w"] as myfile: myfile.write[newData]
Trong đoạn mã trên, sau khi đọc tệp, dữ liệu mới sẽ được nhập vào. Cả hai phương pháp trên đều quan trọng như nhau, học cả hai có thể hữu ích
Cuối cùng, sử dụng các phương pháp trên, chúng ta có thể ghi đè lên một tệp bằng Python. Đó là nó cho hướng dẫn này guys. Tôi nghĩ rằng bài viết này đã giúp bạn trong một số cách
Xin chào mọi người, đây là Thijmen, và trong bài viết này, tôi sẽ trình bày hai phương pháp để ghi đè các dòng đã in trước đó trong Python bằng cách sử dụng các chuỗi thoát ANSI
Bài viết này cũng có sẵn ở định dạng video trên YouTubeHoàn tác các câu lệnh in có thể rất hữu ích nếu bạn muốn cung cấp đầu ra liên tục mà không làm lộn xộn màn hình
Việc triển khai và kết quả dự định hơi khác nhau đối với từng phương pháp, vì vậy phương pháp nào sẽ sử dụng thực sự phụ thuộc vào trường hợp sử dụng của bạn. Ưu và nhược điểm của chúng sẽ trở nên rõ ràng ngay sau khi bạn hiểu cách chúng hoạt động, vì vậy hãy bắt đầu ngay với phương pháp đầu tiên
💡 Trong bài viết này, tôi cung cấp một số thông tin cơ bản giúp bạn hiểu cách thức và lý do các phương pháp này hoạt động. Nếu bạn muốn khắc phục nhanh, có TL;DR ở dưới cùng
Phương pháp 1. Vận chuyển trở lại
Nhanh chóng và đơn giản
Tóm lược
- In dòng, nhưng kết thúc bằng ký tự xuống dòng thay vì ký tự xuống dòng. Điều này di chuyển con trỏ trở lại đầu dòng in
- In một dòng khác, nhưng vì con trỏ hiện đang ở đầu dòng trước, kết quả mới sẽ được in ở đầu dòng trước
Tiếp cận
Theo mặc định, câu lệnh print
của Python kết thúc mỗi chuỗi được truyền vào hàm bằng một ký tự xuống dòng, \n
. Hành vi này có thể được ghi đè bằng tham số end
của hàm, đây là cốt lõi của phương pháp này
Thay vì kết thúc đầu ra bằng một dòng mới, chúng tôi sử dụng dấu xuống dòng
Khi chúng ta kết thúc câu lệnh print
bằng dấu xuống dòng, về cơ bản, chúng ta sẽ di chuyển con trỏ trở lại đầu dòng được in, thay vì đến dòng tiếp theo. Sau đó, nếu chúng ta in một chuỗi khác, văn bản được in “trên cùng” của chuỗi trước đó. Trong Python, dấu xuống dòng được biểu thị bằng \r
💡 Ban đầu, thuật ngữ “carriage return” dùng để chỉ một cơ chế hoặc đòn bẩy trên máy đánh chữ được vận hành sau khi gõ một dòng văn bản, giúp căn chỉnh phần tử loại của máy về phía bên trái của tờ giấy
Trường hợp ví dụ
Giả sử chúng ta có một chuỗi đơn giản mà chúng ta muốn in từng ký tự, cứ sau 0 lại có một ký tự. 5 giây
Trường hợp ví dụ [chưa ghi đè]Sử dụng câu lệnh print
mặc định, điều này trông giống như vậy
Trường hợp ví dụ [chưa ghi đè]
Bây giờ hãy xem điều gì sẽ xảy ra nếu chúng ta kết thúc mỗi câu lệnh print
bằng dấu xuống dòng thay vào đó
Tất cả các ký tự được in trên cùng một dòng
Phương pháp 1 trong thực tế
Dễ dàng phải không? . Bởi vì về cơ bản, chúng tôi xuất từng câu lệnh print
liên tiếp trên đầu ra trước đó, nên việc in một dòng ngắn hơn dòng trước đó là không khả thi.
Xem điều gì sẽ xảy ra nếu chúng ta in 'xong' ở cuối vòng lặp
Lưu ý phương pháp 1. in các dòng ngắn hơn
Chúng tôi có thể ngăn chặn điều này bằng cách xóa dòng trước đó trước khi chúng tôi in một chuỗi ngắn hơn
Trình tự ANSI trên dòng 6 chỉ ra rằng dòng có con trỏ sẽ bị xóa [lưu ý \r
ở cuối vòng lặp for]. Bằng cách sử dụng biến
with open['downloads/myfile.txt', "r"] as myfile: data = myfilef.read[] with open['downloads/myfile.txt', "w"] as myfile: myfile.write[newData]1 làm tham số
end
, chúng tôi đảm bảo rằng không có ký tự xuống dòng bổ sung nào được inHơi phức tạp hơn, nhưng đầu ra sạch hơn và linh hoạt hơn
Tóm lược
- Dòng in [mặc định kết thúc bằng một dòng mới]
- Ngay trước câu lệnh
print
tiếp theo. di chuyển con trỏ lên và xóa dòng. Hành động này có thể được lặp lại để hoàn tác nhiều dòng đã in - In dòng tiếp theo của bạn
Tiếp cận
Trong phương pháp này, chúng tôi không thay đổi tham số end
của câu lệnh print
được sử dụng để hiển thị đầu ra của chúng tôi. Thay vào đó, chúng tôi thêm một câu lệnh print
bổ sung để xóa dòng trước đó bằng hai mã thoát ANSI
- Mã ANSI được gán cho
\n
5 chỉ ra rằng con trỏ sẽ di chuyển lên một dòng - Mã ANSI được gán cho
with open['downloads/myfile.txt', "r"] as myfile: data = myfilef.read[] with open['downloads/myfile.txt', "w"] as myfile: myfile.write[newData]
1 sẽ xóa dòng có con trỏ [cũng được sử dụng trong phương thức đầu tiên]
Lưu ý rằng chúng tôi đã thay đổi tham số end
của câu lệnh print
bổ sung để ngăn ký tự xuống dòng mặc định được in
Phương pháp 2 trong thực tế
Về mặt chức năng, phương pháp này cung cấp hai ưu điểm so với phương pháp đầu tiên
- Bạn không phải lo lắng về độ dài của dòng tiếp theo
- Con trỏ không can thiệp trực quan vào các dòng in
Gọn gàng, phải không?
TL;DRChúng ta có cuộc sống bận rộn. tôi hiểu rồiNếu bạn học được điều gì đó mới từ bài viết này, vui lòng cân nhắc đăng ký kênh YouTube của tôi. Cảm ơn. 🙂
Bài viết này và video tương ứng là một phần trong chuỗi Python Snippets của tôi, nơi chúng tôi đề cập đến nhiều chủ đề khác nhau xung quanh lập trình Python ở định dạng có kích thước byte