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
  Difference between tell() and seek(0, 1) tekberg 2 2,222 Oct-11-2024, 05:00 AM
Last Post: deanhystad
  negative memory usage akbarza 1 1,854 Apr-27-2024, 08:43 AM
Last Post: Gribouillis
  cmath.rect accepts a negative modulus JMB 2 1,818 Jan-17-2024, 08:00 PM
Last Post: JMB
  Goal Seek tdutcher05 1 4,114 Nov-17-2023, 10:33 PM
Last Post: deanhystad
  How to do bar graph with positive and negative values different colors? Mark17 1 10,477 Jun-10-2022, 07:38 PM
Last Post: Mark17
  is there any tool to convert negative base to int? Skaperen 7 4,588 May-27-2022, 07:30 AM
Last Post: Gribouillis
  pytz: get integer utc offset from Olsen region/city h4tt3n 2 10,018 Jul-30-2020, 06:43 AM
Last Post: h4tt3n
  how to write offset number to disk use python? Pyguys 4 5,168 Apr-11-2020, 07:53 AM
Last Post: Pyguys
  search binary file and list all founded keyword offset Pyguys 4 5,164 Mar-17-2020, 06:46 AM
Last Post: Pyguys
  Def code does not work for negative integers. doug2019 1 3,019 Oct-31-2019, 11:00 PM
Last Post: ichabod801

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020
This forum uses Lukasz Tkacz MyBB addons.
Forum use Krzysztof "Supryk" Supryczynski addons.