Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python烹饪书第三版6.12一个问题_Python_Python 3.x_Cookbook - Fatal编程技术网

Python烹饪书第三版6.12一个问题

Python烹饪书第三版6.12一个问题,python,python-3.x,cookbook,Python,Python 3.x,Cookbook,Python食谱第三版 6.12。读取嵌套和可变大小的二进制文件 结构 import struct import itertools def write_polys(filename, polys): # Determine bounding box flattened = list(itertools.chain(*polys)) min_x = min(x for x, y in flattened) max_x = max(x for x, y in fl

Python食谱第三版

6.12。读取嵌套和可变大小的二进制文件 结构

import struct
import itertools

def write_polys(filename, polys):
    # Determine bounding box
    flattened = list(itertools.chain(*polys))
    min_x = min(x for x, y in flattened)
    max_x = max(x for x, y in flattened)
    min_y = min(y for x, y in flattened)
    max_y = max(y for x, y in flattened)
    with open(filename, 'wb') as f:
        f.write(struct.pack('<iddddi', 0x1234,
                            min_x, min_y,
                            max_x, max_y,
                            len(polys)))
        for poly in polys:
            size = len(poly) * struct.calcsize('<dd')
            f.write(struct.pack('<i', size + 4))
            for pt in poly:
                f.write(struct.pack('<dd', *pt))
导入结构
进口itertools
def write_polys(文件名,polys):
#确定边界框
展平=列表(itertools.chain(*polys))
最小值x=最小值(x表示x,y表示展平)
max_x=max(x表示x,y表示展平)
min_y=min(y表示x,y表示展平)
max_y=max(y表示x,y表示展平)
将open(filename,'wb')作为f:

f、 write(struct.pack)(“在代码前面的图中,它显示了多边形记录的编码方式。第一个字段是一个
int
,其值为“记录长度包括长度(N字节)”。由于此记录长度是以4字节的
i
整数写入的,因此将
4
添加到构成多边形的所有点(X,Y坐标对)的
大小中。

请分享目标,分享问题是不够的。但是如果我将代码更改为“f.write(struct.pack(“这是因为
read_polys()
函数中的代码几乎紧跟在
write_polys()
之后,当它被读回时,将读取的长度值
pbytes
除以
16
,所以你的判断是正确的,这并不重要。不过,后面还有另一个
read_polys()
函数(第212页)在同一节中,它使用名为
SizedRecord.from_file()
的类方法实用程序读取多边形,并且它具有关键字参数
includes_size=True
。该函数以不同的方式读取数据,读取方式可能与是否使用
+4
有关。