Làm thế nào để bạn đọc một tập tin và sau đó ghi đè lên trong python?

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

Trong hướng dẫn này, chúng ta sẽ học cách sử dụng Python để thay thế một tệp văn bản hiện có bằng một tệp mới, tệp này có thể chứa nội dung khác. Theo một cách nào đó, điều này tương tự như việc tạo một tệp văn bản Python có cùng đường dẫn trong hệ điều hành của bạn. Hướng dẫn này được viết trên máy tính Windows 11, nhưng nó có thể áp dụng với các điều chỉnh rất nhỏ đối với hệ điều hành macOS và Linux

Một lời cảnh báo trước khi tiếp tục. Luôn đảm bảo rằng bạn sao lưu bất kỳ tệp nào trước khi thay đổi chúng theo chương trình

Ghi đè tệp bằng Python

Trong đoạn mã đầu tiên này, chúng tôi sẽ thay thế một tệp hiện có bằng một tệp mới. Chúng tôi bắt đầu bằng cách xác định đường dẫn tệp sẽ được ghi đè, sau đó chúng tôi xác định nội dung tệp [trong trường hợp của chúng tôi - một đối tượng chuỗi dòng đơn]. Sau đó, sử dụng chức năng mở TextIOWrapper và truy cập tệp ở dạng ghi ['w'] nhiều hơn để chúng tôi có thể lưu văn bản vào tệp mới của mình

from pathlib import Path
import datetime

# define directory path and file name
path_dir = Path['C:\WorkDir']
name_file = 'text_file.txt'

# write file contents
file_change_time = datetime.datetime.now[]
file_content = "This is our new file. The file was changed at:" + str[file_change_time]
file_path = path_dir.joinpath[name_file]

# overwrite the file
with  open [file_path, 'w'] as f:
    f.write['\n'+ file_content]

ghi chú

  1. Trong trường hợp đường dẫn tệp được chỉ định trong biến file_path không tồn tại, Python sẽ tạo tệp
  2. Nhưng trong trường hợp đường dẫn Hệ điều hành được lưu trữ trong path_dir không tồn tại, Python sẽ báo lỗi không tìm thấy tệp
FileNotFoundError: [Errno 2] No such file or directory:
  1. Nếu sử dụng chức năng mở tệp như một phần của khối With, Python sẽ xử lý việc đóng tệp văn bản của bạn và không cần gọi hàm đóng trên mọi phiên bản tệp đã mở

Thay thế tệp nếu tồn tại

Để làm cho mã của chúng tôi mạnh mẽ hơn một chút, chúng tôi có thể kiểm tra xem thư mục và tệp có tồn tại không

from pathlib import Path
import datetime

path_dir = Path['C:\WorkDir']
name_file = 'text_file.txt'

# write file contents

file_change_time = datetime.datetime.now[]
file_content = "This is our new file. The file was changed at:" + str[file_change_time]
file_path = path_dir.joinpath[name_file]

#ceck if directory and file exist - create or replace the text file
if path_dir.is_dir[]:
    if file_path.is_file[]:
        with  open [file_path, 'w'] as f:
            f.write['\n'+ file_content]
            print ["Your text file was replaced."]
    else:
        print["The specified file didn't exist. We created a new file."]
else:
    print["The specified directory doesn't exist."]

Thay thế nhiều tệp trong một thư mục

Một trường hợp sử dụng thú vị hơn là ghi đè lên nhiều tệp văn bản hoặc tệp csv trong một thư mục hệ điều hành. Hãy xem xét đoạn mã sau

Chúng ta có thể đọc và ghi nội dung vào tệp bằng Python. Chúng tôi sử dụng hàm open[] để tạo tệp và chỉ định đường dẫn và chế độ cho tệp được yêu cầu. Điều này tạo ra một đối tượng xử lý tệp xử lý các hoạt động tệp khác nhau

Các cách ghi đè tệp trong Python

Để ghi đè lên một tập tin, chúng ta cần xóa nội dung của nó. Trong bài viết này, chúng tôi sẽ ghi đè lên một tệp bằng Python

Sử dụng tham số w trong hàm open[]

Chúng tôi có thể mở các tệp ở các chế độ khác nhau. Chúng tôi có chế độ viết [w], đọc [r] và nối thêm [

with open['downloads/myfile.txt', "r"] as myfile:
    data = myfilef.read[]

with open['downloads/myfile.txt', "w"] as myfile:
    myfile.write[newData]
0]. Khi chúng tôi mở tệp ở chế độ ghi, nó sẽ xóa tất cả nội dung trước đó của tệp và chúng tôi có thể ghi dữ liệu vào tệp này

Ví dụ,

1

2

3

4

 

với mở['tệp. txt','w'] as f:

    f. viết["Nội dung mới"]    

 

Nội dung của tập tin

1

2

3

 

Mới Nội dung    

 

Sử dụng hàm
with open['downloads/myfile.txt', "r"] as myfile:
    data = myfilef.read[]

with open['downloads/myfile.txt', "w"] as myfile:
    myfile.write[newData]
1

Hàm

with open['downloads/myfile.txt', "r"] as myfile:
    data = myfilef.read[]

with open['downloads/myfile.txt', "w"] as myfile:
    myfile.write[newData]
2 cho phép chúng tôi xóa nội dung của tệp. Đối với điều này, chúng ta cần đảm bảo rằng con trỏ tệp nằm ở đầu tệp. Để đạt được điều này, chúng ta sử dụng hàm
with open['downloads/myfile.txt', "r"] as myfile:
    data = myfilef.read[]

with open['downloads/myfile.txt', "w"] as myfile:
    myfile.write[newData]
3 và đặt con trỏ về đầu

Phương pháp này phù hợp khi chúng ta mở tệp ở chế độ đọc

Xem mã dưới đây

1

2

3

4

5

6

 

với mở['tệp. txt','r+'] as f:

    f. tìm kiếm[0]

    f. viết["Nội dung mới"]

    f. cắt ngắn[]    

 

Nội dung của tập tin

1

2

3

 

Mới Nội dung    

 

Trong ví dụ trên,

  • Chế độ
    with open['downloads/myfile.txt', "r"] as myfile:
        data = myfilef.read[]
    
    with open['downloads/myfile.txt', "w"] as myfile:
        myfile.write[newData]
    4 mở tệp ở chế độ đọc và ghi
  • w0 đặt con trỏ tệp đến đầu tệp

Sử dụng hàm w1

Hàm w1 cho phép chúng ta thay thế một chuỗi đã cho bằng một chuỗi khác. Với chức năng này, chúng tôi có thể ghi đè lên một tệp hiện có bằng cách thay thế một cụm từ cụ thể

Ví dụ,

1

2

3

4

5

6

7

8

9

 

f1 = mở['myfile. txt','r']

dữ liệu = f1. đọc[]

dữ liệu = dữ liệu. thay thế['abc','def']

f1. đóng[]

f2 = mở['myfile. txt','w']

f2. ghi[dữ liệu]

f2. đóng[]    

 

Nội dung của tập tin

1

2

3

 

đã thay thế chuỗi def    

 

Trong đoạn mã trên,

  • Đầu tiên chúng tôi mở tệp ở chế độ đọc
  • Chúng tôi đọc nội dung của tập tin
  • Sau đó, chúng tôi thay thế cụm từ được yêu cầu từ nội dung bằng hàm w1
  • Chúng tôi ghi dữ liệu mới này vào cùng một tệp bằng cách mở nó ở chế độ ghi, tự động xóa nội dung trước đó của nó

Sử dụng mô-đun w4

Đối với người dùng làm việc với Python 3, mô-đun w4 có thể truy cập tệp và đọc và ghi nội dung. Chúng ta có thể ghi đè lên nội dung và thay thế nội dung của tệp bằng hàm w6 và hàm w7. Hàm w7 thay thế một chuỗi nếu nó khớp với mẫu biểu thức chính quy hay không

Xem mã dưới đây

1

2

3

4

5

6

7

 

nhập lại

từ pathlib nhập Đường dẫn

đường dẫn tệp = Đường dẫn["tệp của tôi. txt"]

dữ liệu = đường dẫn tệp. read_text[]

đường dẫn tệp. write_text[re. sub[r"def",r"abc", data]]    

 

Nội dung của tập tin

1

2

3

 

đã thay thế chuỗi abc    

 

Hãy cho chúng tôi hiểu những gì đang xảy ra trong ví dụ trên

  • Chúng tôi đọc tệp đã cho bằng đường dẫn của nó và chỉ định nó trong hàm w9
  • open[]0 lưu trữ nội dung của nó trong một biến
  • Chúng tôi thay thế chuỗi bằng hàm w7
  • w6 ghi nội dung của tệp mới và xóa dữ liệu trước đó

Sử dụng hàm open[]3

Nếu chúng tôi muốn ghi đè lên tệp, chúng tôi có thể xóa nó và tạo một tệp mới. Để xóa một tập tin, chúng ta có thể sử dụng hàm open[]3

Trước tiên, chúng tôi sẽ kiểm tra xem một tệp đã cho có tồn tại hay không bằng cách sử dụng chức năng open[]5. Nếu tệp tồn tại, chúng tôi sẽ xóa tệp đó bằng hàm open[]3

Tệp Python có thể ghi đè lên chính nó không?

Điều đó chắc chắn là có thể . Sau khi tập lệnh được tải/nhập, trình thông dịch Python sẽ không truy cập tập lệnh đó nữa, ngoại trừ khi in dòng nguồn trong dấu vết ngăn xếp ngoại lệ. Mọi tệp pyc sẽ được tạo lại vào lần tiếp theo vì tệp nguồn mới hơn pyc.

Chế độ nào sẽ mở tệp và ghi đè lên nội dung nếu nội dung đã tồn tại?

Đôi khi, bạn có thể muốn xóa nội dung của tệp và thay thế hoàn toàn bằng nội dung mới. Bạn có thể làm điều này với phương thức write[] nếu bạn mở tệp bằng chế độ "w" . Như bạn có thể thấy, việc mở một tệp bằng chế độ "w" và sau đó ghi vào tệp đó sẽ thay thế nội dung hiện có.

Chủ Đề