首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -如何正确获取文件中两个偏移量之间的内容?

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

Stack Overflow用户
提问于 2020-11-22 07:02:21
回答 1查看 27关注 0票数 0

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

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

代码语言:javascript
复制
helloworld

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

使用以下代码:

代码语言:javascript
复制
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())

无论如何,我面临的问题是,当使用某个偏移量范围时,似乎显示了由偏移量表示的错误字符...:

代码语言:javascript
复制
:~/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)再次出现,这与之前的测试相反,该测试运行良好/例外...

如何使用两个偏移量正确获取文件内容?(开始/结束)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-22 07:12:57

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64949005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档