Thay thế một dòng trong tệp python

Làm cách nào để ghi đè lên một tệp trong Python?

  • Ngày 19 tháng 10 năm 2022
  • 7 phút đọc

Thay thế một dòng trong tệp python

Xử lý tệp là một thành phần thiết yếu của lập trình. Các tệp được sử dụng để lưu trữ dữ liệu vĩnh viễn. Python cung cấp phương thức lưu trữ dữ liệu chương trình và thực hiện các thao tác trên đó. Mở, viết, đọc, đóng, ghi đè và nối thêm tệp là một số ví dụ về các thao tác này

Trong bài viết này, bạn sẽ tìm hiểu về các thao tác xử lý tệp khác nhau, tập trung vào cách ghi đè tệp trong Python

Trước khi tiếp tục, hãy xem xét các nguyên tắc cơ bản

Tệp trong Python là gì?

Tệp là một tập hợp dữ liệu được lưu trữ dưới dạng một đơn vị trên đĩa. Nó được xác định bằng tên tệp và phần mở rộng tệp. Mọi thứ được lưu trữ dưới dạng tệp, có thể là trang tính excel, tài liệu, v.v.

Chúng tôi thường xử lý hai loại Tệp trong Python

  1. Tập tin nhị phân. Như tên gợi ý, các tệp này lưu trữ dữ liệu nhị phân (như tệp âm thanh, hình ảnh và video). Đây không phải là con người có thể đọc được và được tạo ra để giải thích bằng máy
  2. Tệp văn bản. Các tệp này lưu trữ dữ liệu ở dạng con người có thể đọc được, mỗi dòng mới kết thúc bằng một ký tự xuống dòng (\n). Điều này được sử dụng để lưu trữ 'dữ liệu ký tự'

Trong bài viết này, chúng tôi sẽ tập trung vào các tệp văn bản

 

Chắc hẳn bạn đang thắc mắc, nhu cầu về Tệp trong Python là gì?

Cần tệp trong Python

Dưới đây là một vài lý do làm nổi bật sự cần thiết của các tệp trong khi lập trình

  1. Lưu trữ dữ liệu trong một tệp sẽ bảo toàn dữ liệu đó ngay cả sau khi kết thúc chương trình. Do đó, nó có thể lưu trữ đầu vào, tính toán hoặc đầu ra, theo lệnh
  2. Sử dụng tệp để trích xuất dữ liệu (đầu vào) trong khi xử lý lượng dữ liệu khổng lồ, tiết kiệm thời gian
  3. Thật dễ dàng để di chuyển dữ liệu tính toán thông qua các tệp

Bây giờ, bạn đã học về tệp và lý do tại sao chúng ta cần chúng, hãy xem Hoạt động của tệp

Thao tác tệp trong Python

Các thao tác với tệp là các thao tác có thể thực hiện trên một tệp. Chúng bao gồm các hoạt động được thực hiện bởi người dùng bằng các lệnh Python (hoặc bất kỳ ngôn ngữ lập trình nào khác)

Một vài thao tác tập tin cơ bản được liệt kê dưới đây

  1. Mở ra. Thao tác đầu tiên và quan trọng nhất trên một tệp là mở nó. Khi bạn tạo một tệp, bạn phải mở nó để thực hiện các thao tác xử lý tệp tiếp theo. Python cung cấp hàm open() tích hợp để mở tệp. Hàm open() trả về một đối tượng tệp, còn được gọi là tay cầm, để thực hiện các thao tác tiếp theo tương ứng
  2. Đọc. Như tên gợi ý, thao tác này đọc nội dung của tệp. Python cung cấp nhiều phương thức khác nhau để đọc tệp, phổ biến nhất là hàm read(). Lưu ý rằng để đọc một tệp, bạn cần mở tệp đó ở 'chế độ đọc'
  3. Viết. Thao tác này dùng để ghi thông tin vào tệp. Có nhiều chế độ khác nhau có thể được sử dụng cho thao tác ghi (chúng ta sẽ sớm thảo luận về các chế độ khác nhau)
  4. Đóng. Sau khi hoàn tất các thủ tục phải đóng hồ sơ để lưu dữ liệu. Thao tác này giải phóng tất cả các tài nguyên mà tệp đã sử dụng trong khi xử lý. Python có phương thức close() để đóng tệp

Có lẽ bạn đang tự hỏi tại sao bạn cần đóng tệp theo cách thủ công. Không phải Trình thu gom rác của Python có khả năng thực hiện tác vụ sao?

Garbage Collectors dọn dẹp các đối tượng không được ước tính. Bạn không nên dựa vào trình thu gom rác để đóng tệp. Nó có thể dẫn đến mất dữ liệu hoặc lỗi. Để tìm hiểu thêm về Trình thu gom rác, hãy xem Xóa biến trong Python

Hãy xem bên dưới để biết một vài thao tác tệp khác

Thay thế một dòng trong tệp python

Chế độ truy cập tệp trong Python

Chúng chỉ định cách tệp sẽ được sử dụng sau khi được mở. Chế độ truy cập tệp quy định loại hoạt động có thể được thực hiện trên tệp. Cụ thể hơn, họ chỉ định vị trí của "trình xử lý tệp"

Trình xử lý tệp giống như một con trỏ cho biết vị trí từ đó dữ liệu sẽ được đọc hoặc ghi trong tệp. Bạn cũng có thể cho rằng đó là một con trỏ, để hiểu rõ hơn

Các chế độ truy cập tệp rất quan trọng để tìm hiểu vì chúng đóng vai trò chính trong khi xử lý tệp. Họ cho biết khả năng truy cập tệp trong khi thực hiện bất kỳ thao tác tệp nào. Vì vậy, trước khi chuyển sang ghi đè tệp trong Python, hãy tìm hiểu rõ hơn về các chế độ truy cập tệp trong Python

Python có sáu Chế độ truy cập tệp. Chúng như sau

Sr. Không

Chế độ truy cập

(Thao tác tệp)

Mô tả1. Chỉ đọc ('r')

Chế độ mặc định. Mở một tệp bằng Python để đọc. (Tăng lỗi I\O nếu tệp không tồn tại. )

2. Read & Write ('r+')Với điều này, bạn có thể đọc cũng như viết trong tệp. 3. Chỉ ghi ('w') Được sử dụng để ghi vào tệp. (Thao tác này tạo tệp mới nếu tệp không tồn tại). Điều này ghi đè lên một tập tin hiện có. 4. Viết & Đọc ('w+')Được sử dụng để viết cũng như đọc một tệp đã mở trong Python5. Append Only ('a') Được sử dụng để chèn dữ liệu vào cuối tệp đã mở. Ở đây, dữ liệu hiện có sẽ không bị cắt bớt. 6. Nối và Đọc ('a+') Được sử dụng để mở tệp để ghi (ở cuối) và đọc

Các phương thức truy cập được đề cập cùng với tên tệp trong hàm open()

Cú pháp để mở một tập tin là

f = open("FilePath", "chế độ truy cập")

Tệp có thể nằm trong cùng một thư mục hoặc khác thư mục. Do đó, bạn phải tính đến điều này khi chỉ định vị trí tệp. Nó có thể là Đường dẫn tuyệt đối (bắt đầu từ thư mục gốc) hoặc Đường dẫn tương đối (nằm trong cùng một thư mục)

Hãy lấy một ví dụ về cách mở tệp trong Python

(Ghi chú. Tôi đã tạo một tệp "favtutor. txt" trong cùng thư mục với tệp Python của tôi (temp. py))

# Program: Overwriting a file in Python
# my file name: favtutor
# file type: text ''' file content: This is a favtutor article. Article topic: Overwrite files in Python ''' # opening the file in read mode f = open("favtutor.txt", "r") # f is the File Handler # check the file is open # calling read() function using file handler "f" print(f.read())

Lưu ý rằng trình xử lý tệp 'f' gọi phương thức read() để đọc (lấy) các dòng từ tệp

 

đầu ra

This is a favtutor article.
Article topic: Overwrite files in Python

 

Bạn sẽ nhận thấy rằng tệp "favtutor. txt" đã được tạo trước khi chúng tôi gọi hàm open(). Hãy thử mở một tệp khác (không tồn tại) bằng Python

# Program: Overwriting a file in Python
# my file name: abc
# opening the file in read mode f = open("abc.txt", "r") # f is the File Handler # check the file is open # calling read() function using file handler "f" print(f.read())

 

đầu ra

Traceback (most recent call last):
  File ".\temp.py", line 4, in <module>
    f = open("abc.txt", "r")
FileNotFoundError: [Errno 2] No such file or directory: 'abc.txt'

 

Nó tạo ra một lỗi cho biết không có bất kỳ tệp nào có tên 'abc. txt'

Hãy thử mở tệp bằng chế độ "chỉ ghi". Bạn sẽ nhận thấy sự khác biệt cơ bản giữa chế độ chỉ đọc và chỉ ghi

Mặc dù lỗi đầu tiên tạo ra lỗi trên một tệp không tồn tại, nhưng lỗi sau sẽ tạo một tệp bằng lệnh

Bây giờ chúng ta đã học được một số kiến ​​thức cơ bản về Xử lý tệp trong Python, hãy chuyển sang thao tác với tệp - "ghi đè" một tệp trong Python

Ghi đè tệp bằng Python là gì?

Ghi đè là quá trình thay thế dữ liệu cũ bằng dữ liệu mới. Nó liên quan đến việc thay đổi dữ liệu được viết trước trong một tệp. Ghi đè tệp có thể hiểu là xóa tệp hiện có và thay bằng tệp mới có cùng tên

Bạn không được nhầm lẫn giữa 'ghi đè' và 'xóa' một tệp trong Python với các thao tác giống nhau

Một tệp đã xóa có thể được khôi phục từ bộ nhớ của máy tính, tuy nhiên, một tệp bị ghi đè thì không thể. Điều này xảy ra vì một tệp bị ghi đè sẽ thay thế nội dung gốc của tệp đó, khiến tệp bị thay đổi về mặt vật lý. Do đó, việc truy xuất dữ liệu trong trường hợp này có ít xác suất hơn

Tham khảo hình ảnh bên dưới để hiểu rõ hơn về Ghi đè tệp trong Python

Thay thế một dòng trong tệp python

Trước khi chuyển sang các cách ghi đè tệp bằng Python, hãy nhớ rằng đôi khi "ghi đè tệp bằng Python" được coi là tương tự như "thay thế một vài dòng trong tệp". Nhưng nó khác với việc thêm dữ liệu vào một tệp

Làm cách nào để ghi đè lên một tệp trong Python?

Nhu cầu ghi đè thường xảy ra khi bạn cần thay đổi hoàn toàn một tệp trong Python. Các phương thức bên dưới chứa cả hai phương thức ghi đè lên toàn bộ tệp cũng như các phương thức ghi đè lên một vài dòng trong Python

Vậy hãy bắt đầu

01) Chỉ sử dụng chế độ truy cập tệp ('w')

Chế độ truy cập tệp 'chỉ ghi' ('w') cho phép bạn chỉ ghi vào tệp. (Nhớ chỉ định chế độ truy cập file trong hàm open(). ) Python bao gồm chức năng ghi để ghi vào tệp

Nếu tệp chứa bất kỳ nội dung nào, nó sẽ bị ghi đè hoàn toàn bởi bất kỳ thứ gì bạn viết trên tệp đã mở. Tất cả dữ liệu trước đó trong tệp sẽ bị mất và không thể khôi phục được trong nhiều trường hợp khi bạn ghi đè tệp bằng phương pháp này

Hãy lấy một ví dụ để hiểu rõ hơn

Cân nhắc việc ghi đè lên một tệp có tên là favtutor. txt. Tệp đó phải được mở ở chế độ ghi và được gán cho trình xử lý tệp 'f. ' Trình xử lý tệp 'f' có thể được sử dụng để thực hiện thao tác write()

Đây là ảnh chụp nhanh của tệp đã tồn tại

Thay thế một dòng trong tệp python

Ghi đè tệp bằng Python

# Program: Overwriting a file in Python
# file name: favtutor.txt
""" file content: This is a favtutor article. Article topic: Overwrite files in Python. """ # opening the file in write only mode f = open("favtutor.txt", "w") # f is the File Handler f.write("Overwriting a file in Python.")

 

Vì chúng tôi không thể đọc tệp (vì tệp ở chế độ chỉ ghi), đây là ảnh chụp nhanh của tệp sau khi ghi đè-

đầu ra

Thay thế một dòng trong tệp python

Sử dụng chế độ truy cập chỉ ghi là cách đơn giản nhất để ghi đè lên tệp trong Python

02) Sử dụng hệ điều hành. loại bỏ() chức năng

Đây là một phương pháp khác để ghi đè lên một tệp hoàn chỉnh trong Python. Điều này bao gồm việc xóa tệp hiện có và tạo một tệp mới có cùng thông tin đăng nhập. Mặc dù nó gián tiếp ghi đè lên tệp, nhưng bạn không nên sử dụng phương pháp này thường xuyên. Điều này có thể thay đổi số inode của tệp

Inodes lưu trữ thông tin về tệp và thư mục (thư mục), chẳng hạn như quyền sở hữu tệp, chế độ truy cập (đọc, ghi, thực thi quyền) và loại tệp. Mỗi tệp được kết nối với một inode, có thể nhận dạng bằng một số nguyên được gọi là số i hoặc số inode

Lưu ý rằng điều này yêu cầu nhập mô-đun os

Hãy thử xóa một tệp (abc. txt) bằng Python để ghi đè lên nó

# Program: Overwriting a file in Python
# import the os module
import os # deleting the file abc.txt os.remove("abc.txt")

 

đầu ra

Traceback (most recent call last):
  File ".\temp.py", line 5, in <module>
    os.remove("abc.txt")
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'abc.txt'

 

tập tin abc. txt không tồn tại, do đó chúng tôi gặp phải lỗi khi cố xóa tệp đó. Trước khi xóa một tập tin, bạn nên kiểm tra xem tập tin đó có tồn tại hay không. Nếu tệp không tồn tại, nó sẽ báo lỗi. Do đó, để kiểm tra xem tệp có tồn tại hay không, mô-đun os có os. đường dẫn. hàm tồn tại ()

(Một lần nữa trên một tập tin không tồn tại. ) Thí dụ

# Program: Overwriting a file in Python
# import the os module
import os # check whether the file exists if os.path.exists("abc.txt"): # delete the file os.remove("abc.txt") else: # if the file does not exist. print("File does not exists. File needs to be created.")

 

đầu ra

________số 8

 

Khối if-else giúp chúng ta không gặp lỗi. Chúng tôi cũng có thể mở tệp bằng chế độ truy cập 'w+' hoặc 'w' trong khối khác. Các chế độ này tạo một tệp mới nếu tệp không tồn tại

Bây giờ, hãy lấy một ví dụ về ghi đè lên một tệp hiện có trong Python bằng os. loại bỏ() chức năng

# Program: Overwriting a File in Python
# import the os module
import os

# check whether the file exists
if os.path.exists("favtutor.txt"):
    # delete the file
    os.remove("favtutor.txt")
else:
    # if the file does not exist.
    print("File does not exists. File needs to be created.")

# create/open the file
# using 'w+' for read & write
f = open("favtutor.txt", "w+")
f.write("Overwrite a file in Python.")

# close the file
f.close()

# To read the contains of the file
# open the file in read mode
f = open("favtutor.txt", "r")
print(f.read())
f.close()

 

đầu ra

This is a favtutor article.
Article topic: Overwrite files in Python
0

 

Tôi đã mở tệp ở cuối để đọc nội dung của tệp. Lưu ý rằng bạn cần phải đóng và mở lại một tệp để thay đổi chế độ truy cập của nó

03) Sử dụng hàm seek() và truncate()

Phương pháp này có thể được sử dụng để ghi đè lên một tệp (hoàn toàn hoặc một dòng cụ thể) trong Python. Phương pháp này bao gồm hai chức năng

  1. Hàm tìm kiếm (). Hàm này đặt trình xử lý (con trỏ) ở đầu tệp. Điều này được yêu cầu để đảm bảo rằng trình xử lý vẫn ở đầu tệp, do đó theo mặc định, nó được đặt ở 0
  2. Hàm cắt ngắn (). Hàm này xóa dữ liệu của tệp

Trong khi gọi hàm seek(), bạn có thể thêm dữ liệu của mình vào tệp bằng cách sử dụng hàm write(), sau đó cắt bớt tệp ở cuối

Thí dụ

This is a favtutor article.
Article topic: Overwrite files in Python
1

 

đầu ra

This is a favtutor article.
Article topic: Overwrite files in Python
2

 

Lưu ý rằng tệp bị ghi đè bởi dữ liệu mới

04) Sử dụng phương thức thay thế()

Phương pháp này được ghi đè lên một giai đoạn cụ thể trong một tệp hiện có. Một phần, phương pháp ghi đè tệp này trong Python liên quan đến việc sử dụng chế độ 'chỉ ghi'. Ở đây, chúng tôi lưu trữ dữ liệu trong một biến khác, thực hiện một vài thay thế trong đó, sử dụng phương thức thay thế (). Biến mới này sau đó được gọi để ghi đè lên tệp

Thí dụ

This is a favtutor article.
Article topic: Overwrite files in Python
3

Đầu tiên, bạn cần đọc tệp để lưu dữ liệu vào một biến khác (ở đây, biến có tên là nội dung). Sau đó, phương thức thay thế () được áp dụng cho dữ liệu được lưu trữ. Phương pháp này yêu cầu đối sánh trình tự để thay thế dữ liệu hiện có bằng một dữ liệu khác.  

 

đầu ra

This is a favtutor article.
Article topic: Overwrite files in Python
4

 

Lưu ý cách các từ "Tệp" được 'ghi đè' bởi "Dữ liệu". Phương pháp trên cũng trả lời câu hỏi - "Làm cách nào để thay thế một chuỗi trong tệp bằng Python?"

05) Sử dụng lại. hàm phụ()

Đây là một cách khác để ghi đè lên một tệp trong Python. Nó tương tự như thay thế dữ liệu trong một tập tin. Phương pháp này yêu cầu hàm sub() của mô-đun Biểu thức chính quy (mô-đun re). Nhớ lại rằng hàm sub() trả về một chuỗi trong đó chuỗi thay thế sẽ thay thế tất cả các lần xuất hiện khớp của mẫu đã cho. Do đó, thao tác này cũng sẽ so khớp tuần tự các ký tự để tìm ra kết quả khớp

Bạn cũng sẽ gặp một số chức năng mới ở đây

  1. Đường dẫn(). Chức năng này được nhập từ mô-đun pathlib. Nó trả về đường dẫn của một thư mục/tệp
  2. write_text(). Chức năng này mở một tệp để đọc, ghi văn bản vào đó và đóng tệp
  3. Đọc văn bản(). Chức năng này mở một tệp, đọc nó và đóng nó

Vì vậy, các hàm write_text() và read_text() không cần khai báo lệnh đóng mở file riêng

Hãy lấy một ví dụ để ghi đè lên một tệp trong Python bằng mô-đun re

This is a favtutor article.
Article topic: Overwrite files in Python
5

 

đầu ra

This is a favtutor article.
Article topic: Overwrite files in Python
6

 

Lưu ý rằng dữ liệu (chuỗi ở đây) phân biệt chữ hoa chữ thường. Vì hàm sub() khớp với văn bản nên nó chỉ ghi đè 'tệp' chứ không phải 'Tệp' trong ví dụ trên

Phần kết luận

Trong bài viết này, chúng ta đã nói về một số cách dễ nhất để ghi đè lên một tệp trong Python. Ngoài các phương pháp trên, còn có một phương pháp khác để ghi đè lên tệp trong Python

Nó yêu cầu di chuyển một tệp (giả sử abc. txt) vào thư mục có tệp cùng tên (abc. txt, tệp sẽ bị ghi đè). Phương pháp này sử dụng mô-đun Shutil. Mặc dù điều đó không được khuyến khích, vì về cơ bản, nó thay thế một tệp bằng một tệp khác với sự trợ giúp của các quy ước đặt tên mặc định trong máy tính

Mặc dù tôi chủ yếu sử dụng các chế độ 'chỉ đọc' và 'chỉ ghi', nhưng bạn nên thử các phương pháp này với các chế độ truy cập tệp khác. Bạn có thể ngạc nhiên với kết quả. mã hóa hạnh phúc