Issue 1521491: file.seek() influences write() when opened with a+ mode (original) (raw)

Created on 2006-07-12 22:04 by rudnik_lior, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Messages (8)
msg29150 - (view) Author: Lior (rudnik_lior) Date: 2006-07-12 22:04
Python 2.5b1 (r25b1:47027, Jun 20 2006, 09:31:33) Assuming documentation is correct: (from seek() help "Note that if the file is opened for appending (mode 'a' or 'a+'), any seek() operations will be undone at the next write" Doing the following is __not__ undoing the seek operation after calling this a few times (Simplified code snippet): from __future__ import with_statement with open(path,'a+') as f: f.seek(0,2) # go to end pos = f.tell() f.seek(0,0) line = f.readline().strip() f.seek(0,2) # go to end, not effective if opened with mode a/a+ (currently bug?) f.write("something") Calling the above code repeatedly didnt increase the file size beyond 166 bytes (in my code)
msg29151 - (view) Author: Lior (rudnik_lior) Date: 2006-07-12 22:09
Logged In: YES user_id=1364480 Re-tried the code with empty file - it doesnt grow beyond creating and writting at position 0 so it seems the seek does influence the write position.
msg29152 - (view) Author: Neal Norwitz (nnorwitz) * (Python committer) Date: 2006-07-13 06:29
Logged In: YES user_id=33168 This seems to work for me on Linux. Maybe we are testing differently. What o/s and version are you using? Does this work with Python 2.4? Can you attach a complete test case that demonstrates this problem? Thanks.
msg29153 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2006-07-13 07:43
Logged In: YES user_id=849994 I also cannot see any problem with the above code and can append to a file indefinitely. What exactly are you expecting the code to do, and what do you get? Which OS is this?
msg29154 - (view) Author: Lior (rudnik_lior) Date: 2006-07-28 13:35
Logged In: YES user_id=1364480 This issue is on windows XP. Wasnt tested on other versions (only 2.5b1 and b2) I expect the code to always write at the end according to the documentation. However if I user file seek (opend as A+) to read from begining of the file, the write also goes to begining of file. Note - in the code snippet, please remove the last f.seek(0,2) to see the problem! (it should have been in a comment)
msg29155 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2006-07-28 18:54
Logged In: YES user_id=849994 Perhaps you can try in on Windows, Tim...
msg84506 - (view) Author: Daniel Diniz (ajaksu2) * (Python triager) Date: 2009-03-30 05:06
Can anyone confirm this for Windows and 2.6? Closing otherwise.
msg86001 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2009-04-15 21:25
I can't reproduce it with python2.6 on Vista. The newer C runtime (msvcr90.dll) probably corrected this.
History
Date User Action Args
2022-04-11 14:56:18 admin set github: 43661
2009-04-15 21:25:18 amaury.forgeotdarc set status: pending -> closednosy: + amaury.forgeotdarcmessages: + resolution: out of date
2009-03-30 05:06:50 ajaksu2 set status: open -> pendingpriority: normal -> lowtype: behaviortitle: file.seek() influelce write() when opened with a+ mode -> file.seek() influences write() when opened with a+ modenosy: + ajaksu2versions: + Python 2.6, - Python 2.5messages: + stage: test needed
2006-07-12 22:04:18 rudnik_lior create