Viết bằng Python có ghi đè lên không?

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 YouTube

Hoà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

  1. 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
  2. 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 đó

Phương pháp 1. Trường hợp ví dụ [có ký tự xuống dòng]

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 in

Phương pháp 1. ví dụ làm việc. Phương pháp 2. “Dọn dẹp”

Hơ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

  1. Dòng in [mặc định kết thúc bằng một dòng mới]
  2. 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
  3. 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

Phương pháp 2. ví dụ làm việc
  1. Mã ANSI được gán cho \n5 chỉ ra rằng con trỏ sẽ di chuyển lên một dòng
  2. 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

  1. Bạn không phải lo lắng về độ dài của dòng tiếp theo
  2. 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;DR

Chúng ta có cuộc sống bận rộn. tôi hiểu rồi

Nế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

Viết hoạt động như thế nào trong Python?

Phương thức write[] ghi một văn bản đã chỉ định vào tệp . Nơi văn bản được chỉ định sẽ được chèn tùy thuộc vào chế độ tệp và vị trí luồng. "một". Văn bản sẽ được chèn vào vị trí dòng tệp hiện tại, mặc định ở cuối tệp.

R+ có ghi đè lên Python không?

Ở chế độ r+, chúng ta có thể đọc và ghi tệp nhưng vị trí con trỏ tệp nằm ở đầu tệp; . Ví dụ dưới đây sử dụng f. read[] để di chuyển con trỏ tệp đến cuối tệp và nối thêm một dòng mới. if we write the file directly, it will overwrite the beginning content. The below example uses f. read[] to move the file pointer to the end of the file, and append a new line.

Chủ Đề