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])
我正在尝试获取两个偏移量之间的内容(本质上是文件的一部分)。为此,我发现 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])