我正在尝试获取两个偏移量之间的内容(本质上是文件的一部分)。为此,我发现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())无论如何,我面临的问题是,当使用某个偏移量范围时,似乎显示了由偏移量表示的错误字符...:
:~/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 (以检查大小),然后使用xxd进行一些十六进制的测试和检查输出。
可以看出,其中一个评论“作品”的工作符合预期,就像在中一样,我可以获得两个偏移量之间的内容。
但对于最后一个测试,我想在“e”字符之间获取内容(在本例中是偏移量1),但随后,注意到先前丢弃的换行符(偏移量10)再次出现,这与之前的测试相反,该测试运行良好/例外...
如何使用两个偏移量正确获取文件内容?(开始/结束)
发布于 2020-11-22 07:12:57
大小是两个偏移量之间的距离,即结束减去开始。
size = int(sys.argv[2]) - int(sys.argv[1])
https://stackoverflow.com/questions/64949005
复制相似问题