Và nếu không được tham chiếu thì sẽ là gc và bị xóa đúng không ạ? khi mình **print một chuỗi hay con số gì đó thì nó chưa được tham chiếu cho nên sau khi mà print xong thì nó mới bị mất đi đúng không ạ?
Close file là gì?
Em còn 1 thắc mắc như này nếu như này:
bởi vì trên mình đã **input = open(from_file)**rồi cho nên khi mình out_file.write(open(from_file).read()) thì nó cái open(from_file).read() ấy nó sẽ chỉ đọc nội dung file thôi đúng ko ạ? Không mở gì hết vì mở là input?
còn trong 1 chương trình khác em có code open(filename).read() thì lúc này nó sẽ mở và đọc vì chưa được tham chiếu cũng như mở file? (Cái em thắc mắc là chỗ này cái cách mà đọc file) và sẽ bị close lại và nội dung file cũng mất luôn?
Trong code của bạn đưa, out_file=open(to_file, 'w')
vậy sao bạn lại nói là nó không được tham chiếu? Mình đã nêu ở trên rồi còn gì.[quote=“usersyer, post:40, topic:30726, full:true”]
Và nếu sửa indata thành open(filename).read() trong code out_file.write() thì sau khi viết được nội dung của file (xong 1 câu lệnh với open(from_file).read() ) thì open(from_file).read() sẽ bị mất đi vì là gc và out_file.write cũng thế? indata cũng giống như open(from_file).read() nhưng open(from_file).read() bị mất đi , **indata thì lưu nội dung của file và ko liên qua gì đến file còn open(from_file).read() phải mở file để đọc
[/quote]
Ý này của bạn đúng ở chỗ open(filename).read()
sẽ bị mất sau khi ghi lên out_file
vì sao? Vì nó đọc (nhận) nội dung một file nhưng không được lưu lại vào một đối tượng (GC). Còn out_file.write()
là ghi (cho) lên file một nội dung nào đó. Bạn nhận mà bạn không giữ thì nó là GC, còn bạn cho thì đâu có dính dáng gì tới GC
Quy trình của câu lệnh này là mở->đọc->đóng. Nếu câu lệnh này đứng một mình thì sau khi đóng nội dung đọc được từ file mất đi chứ không phải nội dung trên file mất đi, bạn phân biệt kỹ chỗ này. Nếu câu lệnh này làm tham số cho lệnh khác, ví dụ print open(from_file).read()
thì sau khi print mới mất.
Anh hiểu nhầm ý em ở cái out_file.write ấy ạ, ý em hỏi là khi write thì không được tham chiếu sẽ là GC và mất đi thì tại nó thể in được! Nhưng anh đã trả lời là ghi(cho) thì không liên quan gì đến GC mà đọc file nhận nếu không chuyền tham chiếu để lưu trữ thì sẽ là GC? Vậy mình print một số hay chuỗi nào đó thì nó không được tham chiếu và sẽ mất sau khi in xong đúng không ạ? Hay nó cũng là trường hợp giống write
Khi code như vậy out_file.write(open(from_file).read()) sẽ theo quy trình là mở file sau đó đọc nội dung file và sau khi đọc xong out_file.write sẽ ghi nội dung đó vào to_file. thế thì cách mà nó đóng là sao ạ? trên mình đã input = open(from_file) rồi nếu như mình input.close() thì nó có đóng file ở chổ đó được không? hay open(from_filename).read() đơn giản là đọc nội dung file thôi? còn nếu mình open(from_file).read() ở chương trình khác thì nó sẽ mở file->đọc->đóng?
Hay là cái open(from_file).read() nó không liên quan gì đến input hết! Nó mở file sau đó đọc nội dung file rồi write nội dung đó vào to_file. Sau đó nó sẽ là tự close do là GC không có tham chiếu (khác với input ở trên tuy cùng là from_file vì input ở trên được lưu ở 1 vùng nhớ khác) và nội dung đọc được sẽ mất sau khi ghi xong! Còn nếu sửa open(file_name).read() thành input.read() lúc này đơn giản là nó mở file sau đó đọc nội dung file và mất sau khi in xong? (Do nó mở file ở input cho nên khi input.close() nó cũng bị đóng luôn.
Nếu như vậy khi indata = input.read() thì nó sẽ mở file sau đó đọc file và lưu vào indata hay là mình đã mở file rồi input.read() chỉ là để đọc nội dung file thôi, nếu như thế thì ở trên cũng vậy.
Kết luận như này:
open(from_file).read() nó không liên quan gì đến input hết Do chưa được mở lên
nó sẽ mở file–>đọc, rồi sau đó out_file.write =open(from_file).read() sẽ write nội dung vừa đọc vào to_file Và open(from_file) với input tuy là file object , mở file! Nhưng lại không liên đến nhau do đó open(from_file) không được tham chiếu GC -->đóng file, nội dung đọc được sẽ mất sau khi write xong!
Còn khi mình chỉnh lại thành input.read() thì nó đã mở file rồi cho nên khi input.read() thì sẽ thực hiện method read đọc nội dung file rồi sẽ được ghi như trên vào to_file còn đóng file thì input.close() là ok
Còn nếu như open(from_file).read() chỉ là để đọc file thôi thì chưa mở thì làm sao đọc được! Do đó nó sẽ mở file rồi đọc!!
A ơi, nếu a có FB thì không phiền có thể addfriend với em được không ạ? Thật sự em cần được giải đáp lắm ạ!