小编Tek*_*ekz的帖子

在 Python 中对字节对象进行切片是否会创建一个全新的数据副本?

假设我有非常大的字节对象(加载二进制文件后),我想逐部分读取并推进起始位置直到它到达末尾。我使用切片来实现这一点。我担心每次我请求切片时 python 都会创建全新的副本,而不是简单地给我指向我想要的位置的内存地址。

简单的例子:

data = Path("binary-file.dat").read_bytes()
total_length = len(data)
start_pos = 0

while start_pos < total_length:
   bytes_processed = decode_bytes(data[start_pos:])  # <---- ***
   start_pos += bytes_processed 
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,python 是否由于start_pos切片而从 开始创建全新的字节对象副本。如果是这样,避免数据复制并仅使用指针传递到字节数组的相关位置的最佳方法是什么。

python python-bytearray

12
推荐指数
1
解决办法
4858
查看次数

AbstractNum 和 NumberingInstance 的用途

1)

我在想他的目的AbstractNum是重用编号格式并NumberingInstance创建新列表(从 1 开始)。但是我注意到的是,如果在 1 处重新启动列表的第二个实例,openxml 文档将具有该AbstractNum元素的精确副本(唯一的区别是Nsid)并NumberingInstance指向该AbstractNum元素。

例如:如果我有一个列表如下

  1. 第 1 项
  2. 第 2 项

另一个列表如下,样式完全相同,但从 1 重新开始

  1. 第 3 项
  2. 第 4 项

这将产生AbstractNum(具有相同定义)的两个副本和NumberingInstance. AbstractNum如果样式相同,重复定义 ( )的目的是什么

2)

如果需要AbstractNum为每个创建副本NumberingInstance,有人可以告诉我如何生成Nsid值(十六进制)。看起来如果你有两个AbstractNum相同的Nsid也会导致列表编号的延续(而不是第二个列表从 1 开始)但我不知道如何生成一个唯一的Nsid

openxml

1
推荐指数
1
解决办法
634
查看次数

标签 统计

openxml ×1

python ×1

python-bytearray ×1