Python - 如何正确获取文件中两个偏移量之间的内容?

Python - How to correctly get content between two offset in a file?

我正在尝试获取两个偏移量之间的内容(本质上是文件的一部分)。为此,我发现 fileslice 很有用。

为了测试,我使用了一个名为 hello 的文件,其字符串为:

helloworld

因为我正在测试不同的东西,所以我故意留了一个换行符。

使用此代码:

from fileslice import Slicer
import sys

r = open('hello', 'r')

slicer = Slicer(r)

start = int(sys.argv[1])
size = int(sys.argv[2])
fileslice = slicer (start, size)
    
sys.stdout.write(fileslice.read())

无论如何,我面临的问题是,当使用特定的偏移范围时,似乎显示了偏移所代表的错误字符...:[=​​21=]

:~/fileslice$ wc -c hello # using wc to check the size
11 hello
:~/fileslice$ python -u "/home/user/fileslice/testslice.py" 0 11 | xxd # works
00000000: 6865 6c6c 6f77 6f72 6c64 0a              helloworld.
:~/fileslice$ python -u "/home/user/fileslice/testslice.py" 0 10 | xxd # works
00000000: 6865 6c6c 6f77 6f72 6c64                 helloworld
:~/fileslice$ python -u "/home/user/fileslice/testslice.py" 1 10 | xxd # doesn't work as expected
00000000: 656c 6c6f 776f 726c 640a                 elloworld.

在这里,我使用前面提到的测试文件和代码并将输出通过管道传输到 wc(以检查大小),然后进行一些测试并使用 [= 检查十六进制输出16=].

可以看出,评论“有效”的人按预期工作,因为我可以很好地获取两个偏移量之间的内容。

但对于最后一个,我想在 char e(在本例中为偏移量 1)之间获取内容,这“有效”但是,请注意之前丢弃的换行符( offset 10) 再次出现,与之前的测试相反 fine/as excepted...

如何使用两个偏移量正确获取文件内容? (start/end)

大小是两个偏移量之间的距离,即结束减去开始。

size = int(sys.argv[2]) - int(sys.argv[1])