Câu trả lời:
with open("test.txt", "a") as myfile:
myfile.write("appended text")
with open(file, "a")
phương pháp. Tôi có thể lỗi thời, nhưng lợi thế hơnopen(file, "a") ... file.close()
print("appended text", file=myfile)
cũng có thể, cho một api quen thuộc hơn.
Bạn cần mở tệp ở chế độ chắp thêm, bằng cách đặt "a" hoặc "ab" làm chế độ. Xem mở () .
Khi bạn mở với chế độ "a", vị trí ghi sẽ luôn ở cuối tệp (phần phụ). Bạn có thể mở bằng "a +" để cho phép đọc, tìm ngược và đọc (nhưng tất cả các ghi sẽ vẫn ở cuối tệp!).
Thí dụ:
>>> 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 - xem xét điều 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 bằng 'a' đảm bảo rằng tất cả các lần ghi sau của bạn sẽ được nối nguyên tử vào cuối tệp (ngay cả khi tệp phát triển bằng cách ghi khác).
Một vài chi tiết khác về cách chế độ "a" hoạt động (chỉ được thử nghiệm trên Linux ). Ngay cả khi bạn tìm kiếm lại, mọi ghi sẽ xuất hiệ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'
Trong thực tế, fopen
trang man nói:
Mở tệp ở chế độ chắp thêm (là ký tự đầu tiên của chế độ) khiến tất cả các thao tác ghi tiếp theo vào luồng này xảy ra ở cuối tệp, như thể trước cuộc gọi:
fseek(stream, 0, SEEK_END);
with
):Ví dụ: ( trong một chương trình thực tế sử dụng with
để đóng tệp - xem tài liệu )
>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'
Tôi luôn luôn làm điều này,
f = open('filename.txt', 'a')
f.write("stuff")
f.close()
Nó đơn giản, nhưng rất hữu ích.
Bạn có thể muốn vượt qua "a"
như là đối số chế độ. Xem các tài liệu cho open () .
with open("foo", "a") as f:
f.write("cool beans...")
Có các hoán vị khác của đối số chế độ để cập nhật (+), cắt ngắn (w) và chế độ nhị phân (b) nhưng bắt đầu chỉ "a"
là đặt cược tốt nhất của bạn.
file
làm mờ chức năng tích hợp. Đừng sử dụng nó cho các biến.
file
không còn là nội dung trong Python 3. Ngay cả trong Python 2, nó rất hiếm khi được sử dụng . Mở một tập tin là một hoạt động phổ biến. Bạn có thể sử dụng file
tên ở đây trên cả Python 2 và 3. Biết khi nào không nhất quán.
Python có nhiều biến thể trong ba chế độ chính, ba chế độ này là:
'w' write text
'r' read text
'a' append text
Vì vậy, để thêm vào một tập tin dễ dàng như:
f = open('filename.txt', 'a')
f.write('whatever you want to write here (in append mode) here.')
Sau đó, có các chế độ chỉ làm cho mã của bạn ít dòng hơn:
'r+' read + write text
'w+' read + write text
'a+' append + read text
Cuối cùng, có các chế độ đọc / ghi ở định dạng nhị phân:
'rb' read binary
'wb' write binary
'ab' append binary
'rb+' read + write binary
'wb+' read + write binary
'ab+' append + read binary
khi chúng tôi sử dụng dòng này open(filename, "a")
, điều đó a
cho biết việc nối thêm tệp, điều đó có nghĩa là cho phép chèn thêm dữ liệu vào tệp hiện có.
Bạn chỉ có thể sử dụng các dòng sau để nối thêm văn bản trong tệp của mình
def FileSave(filename,content):
with open(filename, "a") as myfile:
myfile.write(content)
FileSave("test.txt","test1 \n")
FileSave("test.txt","test2 \n")
nếu bạn muốn thêm vào một tập tin
with open("test.txt", "a") as myfile:
myfile.write("append me")
Chúng tôi đã khai báo biến myfile
để mở một tệp có tên test.txt
. Open có 2 đối số, tệp mà chúng tôi muốn mở và một chuỗi đại diện cho các loại quyền hoặc hoạt động mà chúng tôi muốn thực hiện trên tệp
đây là tùy chọn chế độ tập tin
Chế độ Mô tả 'r' Đây là chế độ mặc định. Nó mở tập tin để đọc. 'w' Chế độ này Mở tệp để viết. Nếu tập tin không tồn tại, nó tạo ra một tập tin mới. Nếu tập tin tồn tại, nó cắt ngắn tập tin. 'x' Tạo một tệp mới. Nếu tập tin đã tồn tại, hoạt động thất bại. 'a' Mở tệp trong chế độ chắp thêm. Nếu tập tin không tồn tại, nó tạo ra một tập tin mới. 't' Đây là chế độ mặc định. Nó mở trong chế độ văn bản. 'b' Điều này mở trong chế độ nhị phân. '+' Điều này sẽ mở một tệp để đọc và viết (cập nhật)
Các 'a'
biểu thị tham số thêm chế độ. Nếu bạn không muốn sử dụng with open
mỗi lần, bạn có thể dễ dàng viết một hàm để làm điều đó cho bạn:
def append(txt='\nFunction Successfully Executed', file):
with open(file, 'a') as f:
f.write(txt)
Nếu bạn muốn viết ở một nơi khác ngoài cuối, bạn có thể sử dụng 'r+'
† :
import os
with open(file, 'r+') as f:
f.seek(0, os.SEEK_END)
f.write("text to add")
Cuối cùng, 'w+'
tham số cho phép tự do hơn nữa. Cụ thể, nó cho phép bạn tạo tệp nếu nó không tồn tại, cũng như làm trống nội dung của tệp hiện đang tồn tại.
Cách đơn giản nhất để nối thêm văn bản vào cuối tệp sẽ là sử dụng:
with open('/path/to/file', 'a+') as file:
file.write("Additions to file")
file.close()
Câu lệnh a+
trong open(...)
lệnh hướng dẫn mở tệp ở chế độ chắp thêm và cho phép truy cập đọc và ghi.
Nó cũng luôn luôn là cách tốt để sử dụng file.close()
để đóng bất kỳ tệp nào bạn đã mở sau khi sử dụng xong.
Đây là kịch bản của tôi, về cơ bản là đếm số dòng, sau đó nối thêm, sau đó đếm lại để bạn có bằng chứng.
shortPath = "../file_to_be_appended"
short = open(shortPath, 'r')
## this counts how many line are originally in the file:
long_path = "../file_to_be_appended_to"
long = open(long_path, 'r')
for i,l in enumerate(long):
pass
print "%s has %i lines initially" %(long_path,i)
long.close()
long = open(long_path, 'a') ## now open long file to append
l = True ## will be a line
c = 0 ## count the number of lines you write
while l:
try:
l = short.next() ## when you run out of lines, this breaks and the except statement is run
c += 1
long.write(l)
except:
l = None
long.close()
print "Done!, wrote %s lines" %c
## finally, count how many lines are left.
long = open(long_path, 'r')
for i,l in enumerate(long):
pass
print "%s has %i lines after appending new lines" %(long_path, i)
long.close()