Hướng dẫn python open file to append - python mở tệp để nối thêm

Bạn cần mở tệp ở chế độ nối, bằng cách đặt "A" hoặc "AB" làm chế độ. Xem Open [].

Khi bạn mở với chế độ "A", vị trí ghi sẽ luôn ở cuối tệp [một phần phụ]. Bạn có thể mở với "A+" để cho phép đọc, tìm kiếm ngược và đọc [nhưng tất cả các chữ viết vẫn sẽ ở cuối tệp!].always be at the end of the file [an append]. You can open with "a+" to allow reading, seek backwards and read [but all writes will still be at the end of the file!].

Example:

>>> with open['test1','wb'] as f:
        f.write['test']
>>> with open['test1','ab'] as f:
        f.write['koko']
>>> with open['test1','rb'] as f:
        f.read[]
'testkoko'

Lưu ý: Sử dụng 'A' không giống như mở bằng 'W' và tìm đến cuối tệp - hãy xem xét những gì có thể xảy ra nếu một chương trình khác mở tệp và bắt đầu viết giữa tìm kiếm và ghi. Trên một số hệ điều hành, việc mở tệp với 'A' đảm bảo rằng tất cả các ghi sau đây của bạn sẽ được nối lại một cách nguyên tử đến cuối tệp [ngay cả khi tệp phát triển bởi các ghi khác].: Using 'a' is not the same as opening with 'w' and seeking to the end of the file - consider what might happen if another program opened the file and started writing between the seek and the write. On some operating systems, opening the file with 'a' guarantees that all your following writes will be appended atomically to the end of the file [even as the file grows by other writes].

Một vài chi tiết về cách thức hoạt động của chế độ "A" [chỉ được kiểm tra trên Linux]. Ngay cả khi bạn tìm kiếm lại, mỗi lần ghi sẽ nối vào cuối tệp:

>>> f = open['test','a+'] # Not using 'with' just to simplify the example REPL session
>>> f.write['hi']
>>> f.seek[0]
>>> f.read[]
'hi'
>>> f.seek[0]
>>> f.write['bye'] # Will still append despite the seek[0]!
>>> f.seek[0]
>>> f.read[]
'hibye'

Trên thực tế, các trạng thái nhân lực

fseek[stream, 0, SEEK_END];
6:

Mở một tệp ở chế độ phụ lục [A là ký tự đầu tiên của chế độ] khiến tất cả các hoạt động ghi tiếp theo cho luồng này xảy ra ở cuối tệp, như thể trước cuộc gọi:

fseek[stream, 0, SEEK_END];

Câu trả lời đơn giản hóa cũ [không sử dụng
fseek[stream, 0, SEEK_END];
7]:

Ví dụ: [Trong một chương trình thực, sử dụng

fseek[stream, 0, SEEK_END];
7 để đóng tệp - xem tài liệu]use
fseek[stream, 0, SEEK_END];
7 to close the file
- see the documentation]

>>> open["test","wb"].write["test"]
>>> open["test","a+b"].write["koko"]
>>> open["test","rb"].read[]
'testkoko'

Trong bài viết này, chúng tôi sẽ thảo luận về cách nối văn bản hoặc dòng mới vào một tệp hiện có bằng Python.


Để nối một số văn bản vào một tệp cuối cùng, trước tiên chúng ta cần mở tệp bằng chế độ truy cập,access mode ‘a’,

file_object = open['sample.txt', 'a']

Với chế độ truy cập tệp ‘A, hàm Open [] trước tiên kiểm tra xem tệp có tồn tại hay không. Nếu tệp không tồn tại, thì nó sẽ tạo một tệp trống và mở nó. Trong khi đó, nếu tệp đã tồn tại thì nó sẽ mở nó. Trong cả hai trường hợp, nó trả về một đối tượng tệp và nó có chữ trỏ ghi, chỉ vào cuối tệp đã mở. Bây giờ, nếu bạn viết bất cứ điều gì vào tệp bằng đối tượng tệp này, thì nó sẽ được nối vào cuối.‘a’, open[] function first checks if file exists or not. If the file doesn’t exist, then it creates an empty file and opens it. Whereas, if the file already exists then it opens it. In both cases, it returns a file object, and it has write cursor, which points to the end of the opened file. Now, if you write anything to the file using this file object, then it will be appended to the end.

Hãy để sử dụng nó để nối văn bản ở cuối tệp,

Giả sử chúng ta có một tệp ‘sample.txt, và nội dung của nó là,

Hello this is a sample file
It contains sample text
This is the end of file

Bây giờ, hãy để văn bản nối lại văn bản ‘Xin chào ở cuối tệp này,‘hello’ at the end of this file,

# Open a file with access mode 'a'
file_object = open['sample.txt', 'a']

# Append 'hello' at the end of file
file_object.write['hello']

# Close the file
file_object.close[]

Nội dung của tệp ‘mẫu.txt, bây giờ sẽ là,

Hello this is a sample file
It contains sample text
This is the end of filehello

Chúng tôi đã mở tệp ‘sample.txt, trong chế độ phụ thuộc, tức là sử dụng chế độ truy cập‘ a. Vì con trỏ đã trỏ đến phần cuối của tệp trong đối tượng tệp, do đó khi chúng tôi truyền chuỗi trong hàm write [], nó đã thêm nó ở cuối tệp. Vì vậy, văn bản của chúng tôi ’Xin chào, được thêm vào cuối tệp‘ sample.txt.‘a’. As cursor was pointing to the end of the file in the file object, therefore when we passed the string in write[] function, it appended it at the end of the file. So, our text ‘hello’ gets added at the end of the file ‘sample.txt’.

Nối thêm một văn bản vào tệp trong python bằng cách sử dụng câu lệnh mở

Chúng ta có thể mở tệp trong chế độ truy cập phụ lục, tức là ‘A, sử dụng‘ với câu lệnh mở, và sau đó chúng ta có thể nối thêm văn bản ở cuối tệp. Ví dụ,‘a’, using ‘with open’ statement too, and then we can append the text at the end of the file.
For example,

# Open a file with access mode 'a'
with open["sample.txt", "a"] as file_object:
    # Append 'hello' at the end of file
    file_object.write["hello"]

Nội dung của tệp ‘mẫu.txt, bây giờ sẽ là,

Hello this is a sample file
It contains sample text
This is the end of filehellohello

Chúng tôi đã mở tệp ‘sample.txt, trong chế độ phụ thuộc, tức là sử dụng chế độ truy cập‘ a. Vì con trỏ đã trỏ đến phần cuối của tệp trong đối tượng tệp, do đó khi chúng tôi truyền chuỗi trong hàm write [], nó đã thêm nó ở cuối tệp. Vì vậy, văn bản của chúng tôi ’Xin chào, được thêm vào cuối tệp‘ sample.txt. ‘hello’ gets again added at the end of file ‘sample.txt’.
The main difference between this approach and the previous one was that we don’t need to close the file explicitly. It gets automatically closed when the execution block of ‘with statement’ ends.

Nối thêm một văn bản vào tệp trong python bằng cách sử dụng câu lệnh mở

Chúng ta có thể mở tệp trong chế độ truy cập phụ lục, tức là ‘A, sử dụng‘ với câu lệnh mở, và sau đó chúng ta có thể nối thêm văn bản ở cuối tệp. Ví dụ,
Let’s see how to do that,

Văn bản ‘Xin chào, được thêm vào một lần nữa ở cuối tệp‘ sample.txt. Sự khác biệt chính giữa phương pháp này và phương pháp trước đó là chúng tôi không cần phải đóng tệp một cách rõ ràng. Nó sẽ tự động đóng khi khối thực thi của ‘với câu lệnh kết thúc.

Quảng cáo

Trong cả hai ví dụ trên, văn bản được thêm vào cuối tệp. Nhưng như chúng ta có thể thấy, nó không được thêm vào như một dòng mới. Có thể có các kịch bản khi chúng tôi muốn thêm dữ liệu vào một tệp dưới dạng dòng mới. Hãy để xem cách làm điều đó,

  • Nối dữ liệu vào tệp dưới dạng dòng mới trong Python
  • Giải pháp cho điều này là một chút khó khăn ở đây. Hãy bắt đầu với cách tiếp cận cơ bản và sau đó chúng ta sẽ thảo luận về nhược điểm trong đó và xem cách cải thiện nó,
  • Cách tiếp cận cơ bản
  • Mở tệp ở chế độ phụ lục [‘A,]. Viết các điểm con trỏ vào cuối tập tin.

Nối thêm ‘\ n, ở cuối tệp bằng hàm write []

Nối dòng đã cho vào tệp bằng hàm write [].

Đóng tệp

Cách tiếp cận này hoạt động tốt nếu tệp của chúng tôi đã tồn tại và đã có một số dữ liệu trong đó. Nhưng nếu tệp không tồn tại hoặc tệp trống thì cách tiếp cận này sẽ thất bại vì nội dung của tệp sẽ như thế này,

…………………… ..

  • Dòng được thêm mới
  • Đầu tiên nó viết một dòng trống và sau đó viết dòng của chúng tôi. Nhưng trong trường hợp này, chỉ có một dòng là tốt, chúng tôi không cần phải viết ‘\ n, trước đó.
  • Vì vậy, cách tiếp cận cuối cùng của chúng tôi nên như thế này,
  • Mở tệp trong chế độ Phụ lục & Đọc [‘A+,]. Cả hai điểm con trỏ đọc và viết đến cuối tệp.
  • Di chuyển đọc con trỏ đến đầu tệp.
  • Mở tệp ở chế độ phụ lục [‘A,]. Viết các điểm con trỏ vào cuối tập tin.

Nối thêm ‘\ n, ở cuối tệp bằng hàm write []

Nối dòng đã cho vào tệp bằng hàm write [].‘sample2.txt’ with following contents,

Hello this is a sample file
It contains sample text
This is the end of file

Đóng tệp

>>> f = open['test','a+'] # Not using 'with' just to simplify the example REPL session
>>> f.write['hi']
>>> f.seek[0]
>>> f.read[]
'hi'
>>> f.seek[0]
>>> f.write['bye'] # Will still append despite the seek[0]!
>>> f.seek[0]
>>> f.read[]
'hibye'
1

Cách tiếp cận này hoạt động tốt nếu tệp của chúng tôi đã tồn tại và đã có một số dữ liệu trong đó. Nhưng nếu tệp không tồn tại hoặc tệp trống thì cách tiếp cận này sẽ thất bại vì nội dung của tệp sẽ như thế này,sample2.txt‘ now,

>>> f = open['test','a+'] # Not using 'with' just to simplify the example REPL session
>>> f.write['hi']
>>> f.seek[0]
>>> f.read[]
'hi'
>>> f.seek[0]
>>> f.write['bye'] # Will still append despite the seek[0]!
>>> f.seek[0]
>>> f.read[]
'hibye'
2

…………………… ..

Dòng được thêm mới
Initially, both read & write cursors will be pointing to the end of the file. We moved the read cursor to the top of file to check if the file is empty or not.
If the file is not empty, then append ‘\n’ at the end of the file first and then append the line.

Đầu tiên nó viết một dòng trống và sau đó viết dòng của chúng tôi. Nhưng trong trường hợp này, chỉ có một dòng là tốt, chúng tôi không cần phải viết ‘\ n, trước đó.

>>> f = open['test','a+'] # Not using 'with' just to simplify the example REPL session
>>> f.write['hi']
>>> f.seek[0]
>>> f.read[]
'hi'
>>> f.seek[0]
>>> f.write['bye'] # Will still append despite the seek[0]!
>>> f.seek[0]
>>> f.read[]
'hibye'
3

Vì vậy, cách tiếp cận cuối cùng của chúng tôi nên như thế này,

>>> f = open['test','a+'] # Not using 'with' just to simplify the example REPL session
>>> f.write['hi']
>>> f.seek[0]
>>> f.read[]
'hi'
>>> f.seek[0]
>>> f.write['bye'] # Will still append despite the seek[0]!
>>> f.seek[0]
>>> f.read[]
'hibye'
4

Mở tệp trong chế độ Phụ lục & Đọc [‘A+,]. Cả hai điểm con trỏ đọc và viết đến cuối tệp.

>>> f = open['test','a+'] # Not using 'with' just to simplify the example REPL session
>>> f.write['hi']
>>> f.seek[0]
>>> f.read[]
'hi'
>>> f.seek[0]
>>> f.write['bye'] # Will still append despite the seek[0]!
>>> f.seek[0]
>>> f.read[]
'hibye'
5

Nó xác nhận rằng nó đã không nối thêm ‘\ n, trước khi viết một dòng mới vì tệp đã trống.

Bây giờ, hãy để lại một lần nữa, hãy nối một dòng khác vào cùng một tệp để kiểm tra xem nó có hoạt động tốt không,

>>> f = open['test','a+'] # Not using 'with' just to simplify the example REPL session
>>> f.write['hi']
>>> f.seek[0]
>>> f.read[]
'hi'
>>> f.seek[0]
>>> f.write['bye'] # Will still append despite the seek[0]!
>>> f.seek[0]
>>> f.read[]
'hibye'
6

Nội dung của tệp ‘sample3.txt, ngay bây giờ,

>>> f = open['test','a+'] # Not using 'with' just to simplify the example REPL session
>>> f.write['hi']
>>> f.seek[0]
>>> f.read[]
'hi'
>>> f.seek[0]
>>> f.write['bye'] # Will still append despite the seek[0]!
>>> f.seek[0]
>>> f.read[]
'hibye'
7

Vì tệp đã tồn tại và có nội dung quá; Do đó, trước tiên, nó đã thêm ‘\ n, vào tệp và sau đó là dòng đã cho của chúng tôi.

Nối nhiều dòng vào một tệp trong Python

Giả sử chúng ta có một danh sách chuỗi,

>>> f = open['test','a+'] # Not using 'with' just to simplify the example REPL session
>>> f.write['hi']
>>> f.seek[0]
>>> f.read[]
'hi'
>>> f.seek[0]
>>> f.write['bye'] # Will still append despite the seek[0]!
>>> f.seek[0]
>>> f.read[]
'hibye'
8

Bây giờ chúng tôi muốn nối từng phần tử trong danh sách dưới dạng một dòng trong tệp. Làm thế nào để làm điều đó?

Chúng tôi có thể làm điều đó bằng cách gọi hàm trên được tạo trên append_new_line [] nhiều lần, nhưng nó không phải là một giải pháp được tối ưu hóa vì nó sẽ mở và đóng tệp cho từng phần tử trong danh sách. Chúng ta chỉ nên mở tệp một lần và nối tất cả các dòng vào nó. Để làm điều đó thuật toán của chúng tôi sẽ như thế nào,append_new_line[] multiple times, but it is not an optimized solution because it will open and close the file for each element in the list.
We should open the file only once and append all the lines to it. To do that our algorithm should be like,

  • Mở tệp trong chế độ Phụ lục & Đọc [‘A+,]. Cả hai điểm con trỏ đọc và viết đến cuối tệp.
  • Di chuyển đọc con trỏ đến đầu tệp.
  • Đọc một số văn bản từ tệp và kiểm tra xem tệp có trống hay không.
  • Nếu tệp không trống, thì hãy đặt appendeol là đúngappendEOL as True else False
  • Bây giờ cho mỗi yếu tố trong danh sách
    • Nếu phần tử đầu tiên của nó trong danh sách và phụ lục là sai
      • Don lồng nối thêm ‘\ n, ở cuối tệp bằng hàm write [].
    • Khác
      • Nối thêm ‘\ n, ở cuối hàm sử dụng hàm write [].
    • Nối phần tử & nbsp; đến tệp bằng hàm write [].
  • Đóng tệp

Về cơ bản, chúng tôi không cần phải viết đầu tiên ‘\ n, nếu tệp trống.

Một chức năng để nối nhiều dòng trong một tệp là,

>>> f = open['test','a+'] # Not using 'with' just to simplify the example REPL session
>>> f.write['hi']
>>> f.seek[0]
>>> f.read[]
'hi'
>>> f.seek[0]
>>> f.write['bye'] # Will still append despite the seek[0]!
>>> f.seek[0]
>>> f.read[]
'hibye'
9

Bây giờ, hãy để sử dụng chức năng này. Giả sử nội dung của tệp ‘sample3.txt, như sau,
Suppose contents of file ‘sample3.txt’ is as follows,

>>> f = open['test','a+'] # Not using 'with' just to simplify the example REPL session
>>> f.write['hi']
>>> f.seek[0]
>>> f.read[]
'hi'
>>> f.seek[0]
>>> f.write['bye'] # Will still append despite the seek[0]!
>>> f.seek[0]
>>> f.read[]
'hibye'
7

Chúng tôi có một danh sách các chuỗi,

fseek[stream, 0, SEEK_END];
1

Chuẩn bị tất cả các chuỗi trong danh sách này dưới dạng các dòng riêng biệt ở cuối tệp ‘sample3.txt,

fseek[stream, 0, SEEK_END];
2

Bây giờ nội dung của tệp ‘sample3.txt, là,

fseek[stream, 0, SEEK_END];
3

Nó đã thêm tất cả các chuỗi trong danh sách đã cho là Newlines trong tệp.

Ví dụ hoàn chỉnh như sau,

fseek[stream, 0, SEEK_END];
4

Đầu ra:

fseek[stream, 0, SEEK_END];
5

Làm cách nào để mở một tập tin với việc thêm vào Python?

Chế độ "A" cho phép bạn mở một tệp để nối một số nội dung vào nó. Và chúng tôi muốn thêm một dòng mới vào nó, chúng tôi có thể mở nó bằng chế độ "A" [phụ lục] và sau đó, gọi phương thức write [], chuyển nội dung mà chúng tôi muốn nối làm đối số.open it using the "a" mode [append] and then, call the write[] method, passing the content that we want to append as argument.

Làm thế nào để bạn mở một tệp trong ghi và nối vào Python?

Trước tiên bạn bắt đầu với từ khóa. Tiếp theo, bạn mở tệp văn bản. Hàm Open [] trả về một đối tượng tệp và lấy hai tham số: đường dẫn đến tệp và tên của chính tệp mà bạn muốn mở. Tệp trong ví dụ này nằm trong cùng thư mục với tập lệnh Python, vì vậy đường dẫn rất đơn giản.

Làm thế nào để bạn nối một tệp vào một tệp khác trong Python?

Thuật toán:..
Nhập tên của các tệp ..
Mở cả hai tệp trong chế độ chỉ đọc bằng hàm Open [] ..
In nội dung của các tệp trước khi nối thêm hàm Read [] ..
Đóng cả hai tệp bằng hàm đóng [] ..
Mở tệp đầu tiên ở chế độ phụ lục và tệp thứ hai ở chế độ đọc ..

Làm cách nào để mở Python để đọc và nối tiếp?

Có 6 chế độ truy cập trong Python ...
Chỉ đọc ['r']: Mở tệp văn bản để đọc.....
Đọc và viết ['R+']: Mở tệp để đọc và viết.....
Chỉ viết ['W']: Mở tệp để viết.....
Viết và đọc ['W+']: Mở tệp để đọc và viết.....
Chỉ nối thêm ['A']: Mở tệp để viết ..

Bài Viết Liên Quan

Chủ Đề