30/09/2018, 17:17

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()
Lập Trình Sư viết 19:26 ngày 30/09/2018

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.

vietanh viết 19:29 ngày 30/09/2018

à 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 ạ?

Phạm Hoàng Tuấn viết 19:30 ngày 30/09/2018

Mode r+ : Dùng để đọc và ghi file, con trỏ ở đầu file
Mode 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.

vietanh viết 19:31 ngày 30/09/2018

anh cho e hỏi là làm sao để biết con trỏ đang ở vị trí nào ạ? em cảm ơn

Phạm Hoàng Tuấn viết 19:30 ngày 30/09/2018

e dùng hàm File.tell()

Link tham khảo đây e :
http://www.tutorialspoint.com/python/file_tell.htm

Bài liên quan
0