Cách hoạt động của các mode `r+`, `a+` khi thao tác với file trong Python?
Dạ chào cả nhà, em là mem mới tập tành học python nên có 1 chút thắc mắc ạ, e thử 1 đoạn code như sau, mà sau khi thử hàm truncate
ko hoạt động, cụ thể là ko xóa nội dung file nên khi e để ở mode a+
hay r+
đều thêm vào nội dung file, đặc biệt ở mode r+
nó ko chèn thêm ở dưới dòng cuối mà chen lẫn lên dòng cuối ký tự luôn, các bác cho em hỏi là e hiểu sai về hàm truncate
và cách hoạt động của các mode r+,a+
hay như nào ạ? vì theo e nghĩ thì hàm truncate
này khi chạy nó đã xóa hết ký tự trong file text r chứ ạ?
còn 1 cấn đề nữa ạ, là ở đoạn sau (chỗ bôi đen in đậm gạch chân ý ạ) khi e thêm vào và cho hiện ký tự thì nó lại hiện ra 1 đống nhị phân @@, ko đọc đc file ạ, e ko hiểu lắm, các bác giúp e vs ạ
em xin cảm ơn :xauho:
from sys import argv
script, filename = argv
print "we're going to erase %r." %filename
print "if you don't want that, hit CTRL-C (^C)."
print "if you do want that, hit return."
raw_input('?')
print "opening the file..."
target = open(filename, 'r+')
print "File: %r" %filename
print target.read()
print "Truncating the file. Goodbye!"
target.truncate()
print "now i'm going to ask you for three line."
line1 = raw_input("line1: ")
line2 = raw_input("line2: ")
line3 = raw_input("line3: ")
print "i'm going to write these to the file."
target.write(line1)
target.write("
")
target.write(line2)
target.write("
")
target.write(line3)
target.write("
")
print "File: %r" %filename
print target.read()
print "and finally, we close it."
target.close()
Hoạt động chứ sao lại không, do em ko đọc code thì đúng hơn
Trước khi truncate() file đã bị read() vậy là con trỏ ở cuối file rồi, gọi truncate() ở cuối file tương đương không làm gì. Hàm truncate() xoá tất cả từ vị trí con trỏ file đang đứng.
à ra thế ạ em cảm ơn ạ, tại e đang học python theo video của dạy nhau học, mà mới học tới đó nên chưa biết ạ, còn hàm read là e thêm vào để đọc file nên cũng chưa rõ phần con trỏ em cảm ơn anh nh ạ (Y), bác cho e hỏi xiu là h e muốn con trỏ đó chỉ lại lên đầu để truncate thì làm sao ạ?
Mode
r+
: Dùng để đọc và ghi file, con trỏ ở đầu fileMode
a+
: Dùng để đọc hoặc ghi file, nếu file chưa tồn tại thì sẽ đc tạo 1 file mới, con trỏ ở cuối file.anh cho e hỏi là làm sao để biết con trỏ đang ở vị trí nào ạ? em cảm ơn
e dùng hàm File.tell()
Link tham khảo đây e :
http://www.tutorialspoint.com/python/file_tell.htm