Python Forum
offset can not be negative in File.seek()?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
offset can not be negative in File.seek()?
#1
It's intersting I can not put the "offset" to non-zero if I set the second parameter as "1" or "2" in file.seek(), and please refer to the below screenshot for more details.
I don't believe it's a bug of Python Idle environment, but how to explain and fix it?

   
Reply
#2
What is csv_file ?
Reply
#3
With the right whence-flag, you can use negative numbers.
Look here: https://docs.python.org/3/library/io.htm...OBase.seek

In [1]: from pathlib import Path                                                              

In [2]: raspbian = Path('Downloads/2019-07-10-raspbian-buster-lite.zip')                      

In [3]: with raspbian.open('rb') as fd: 
   ...:     print('Size:', raspbian.stat().st_size) 
   ...:     print('Pos:', fd.tell()) 
   ...:     print('Seek to -10 bytes from end') 
   ...:     fd.seek(-10, 2) 
   ...:     print('New position:', fd.tell()) 
   ...:                                                                                       
Size: 426250971
Pos: 0
Seek to -10 bytes from end
New position: 426250961
Instead of recognizing the number for 'whence', you can use os.SEEK_END:
In [10]: print(os.SEEK_SET, os.SEEK_CUR, os.SEEK_END)                                         
0 1 2

In addition, I've used pathlib.Path, which is better to handle.
You can still use the built-in function open().
The resulting file-object is the same as from Path.open(mode).
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
Reply
#4
(Sep-27-2019, 11:46 AM)Gribouillis Wrote: What is csv_file ?

csv_file = open("1.csv", "r")


I don't want to use any additional module, saying "os", because it's a simple work to seek backward with "file.seek". Just confused why it doesn't work as descripted.
Reply
#5
The negative seek works if the file is opened in binary mode 'rb'.
Reply
#6
(Sep-27-2019, 07:01 PM)Gribouillis Wrote: The negative seek works if the file is opened in binary mode 'rb'.

Thank you so much, it's really the root cause!
May I know why it only works in "rb" mode? Why not in "r" mode?
Reply
#7
Found the explaination on internet, and thank you again.

Attached Files

Thumbnail(s)
   
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  cmath.rect accepts a negative modulus JMB 2 326 Jan-17-2024, 08:00 PM
Last Post: JMB
  Goal Seek tdutcher05 1 763 Nov-17-2023, 10:33 PM
Last Post: deanhystad
  How to do bar graph with positive and negative values different colors? Mark17 1 5,119 Jun-10-2022, 07:38 PM
Last Post: Mark17
  is there any tool to convert negative base to int? Skaperen 7 2,394 May-27-2022, 07:30 AM
Last Post: Gribouillis
  pytz: get integer utc offset from Olsen region/city h4tt3n 2 5,226 Jul-30-2020, 06:43 AM
Last Post: h4tt3n
  how to write offset number to disk use python? Pyguys 4 3,050 Apr-11-2020, 07:53 AM
Last Post: Pyguys
  search binary file and list all founded keyword offset Pyguys 4 2,757 Mar-17-2020, 06:46 AM
Last Post: Pyguys
  Def code does not work for negative integers. doug2019 1 1,905 Oct-31-2019, 11:00 PM
Last Post: ichabod801
  Positive to negative bernardoB 6 4,351 Mar-13-2019, 07:39 PM
Last Post: bernardoB
  Python offset to length write in a File basic_learner 3 3,922 Dec-13-2018, 06:20 PM
Last Post: Gribouillis

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020