zipimport标准导入会自动使用该模块来处理.zipsys.path元素.
是否可以添加钩子来支持其他文件类型?例如一个处理程序.tar.gz?
例如,如果sys.path包含/path/to/archive.tar.gz或者/path/to/archive.xyz可以提供处理程序来打开和读取.tar.gz或.xyz文件.
在以下示例中:
class Test
{
public:
Test(int _value) { value = _value; };
const bool operator==(int _value) const { return value == _value; };
private:
int value;
};
int main(void)
{
int a;
a == 1;
Test b(1);
b == 1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
汇编给出以下内容:
$ g++ -Wall -pedantic -o test test.cc
a.cc: In function ‘int main()’:
a.cc:13:7: warning: statement has no effect [-Wunused-value]
a == 1;
^
Run Code Online (Sandbox Code Playgroud)
这很好,因为它已经警告我发生错误并输错了== for =
但我的Test课程也是如此.我如何标记类或者运算符的定义==让编译器用"b == 1"行的另一个"语句无效"来警告我?
我试图在一个kivy'画布'中绘制我自己的图形.现在我有一个红色或绿色矩形,每秒更改一次颜色,但我想添加一个更改文本标签.
经过一点搜索后,似乎没有可以添加到画布上的"文本"指令.我找到了一些使用Label()小部件以及画布说明的引用,但这似乎并不理想,而且我似乎无法让它多次呈现.
这是我现在的目标:
class HVObject(BoxLayout):
def __init__(self, **kwargs):
BoxLayout.__init__(self, **kwargs)
self.colour = 1
self.label = Label()
self.render()
self.add_widget(self.label)
self.bind(size=self._update_rect, pos=self._update_rect)
Clock.schedule_interval(self.callevery, 1)
def render(self):
self.canvas.clear()
self.rect = Rectangle(size=self.size, pos=self.pos)
self.canvas.add(Color(1-self.colour, self.colour, 0, 1))
self.canvas.add(self.rect)
self.label.text = "COL %d" % self.colour
self.canvas.ask_update()
def callevery(self, x):
self.colour = 1-self.colour
self.render()
def _update_rect(self, instance, value):
self.rect.pos = instance.pos
self.rect.size = instance.size
self.label.pos = instance.pos
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法来达到我需要的效果?
谢谢
我正在尝试使用libzip在内存中直接创建一个zip文件,而不是在磁盘上创建一个zip文件。目前,我的代码非常基本,因为我无法从zip_source_buffer创建必要的zip_t结构:
#include <stdio.h>
#include <string.h>
#include <zip.h>
int main(int argc, char *arrv[])
{
char buffer[65536] = {};
zip_error_t error;
zip_source_t *zs = zip_source_buffer_create(buffer, sizeof(buffer), 0, &error);
int err = zip_source_begin_write(zs);
printf("%p %d '%s'\n", zs, err, zip_error_strerror(&error));
zip_error_fini(&error);
zip_t * zip = zip_open_from_source(zs, ZIP_CREATE, &error);
printf("%p '%s'\n", zip, zip_error_strerror(&error));
zip_error_fini(&error);
}
Run Code Online (Sandbox Code Playgroud)
代码可以编译并运行,但是会引发错误:
$ ./ztest
0xdd50a0 0 'No error'
(nil) 'Not a zip archive'
Run Code Online (Sandbox Code Playgroud)
尚不清楚是否需要begin_write(),但它不会产生错误,没有它我也会得到相同的结果。
我想念什么?谢谢