小编Ale*_*ter的帖子

如何从 .gz 存档中获取原始文件的名称?

我正在编写一个实用程序,它接受 .gz 存档并检查其内容是否已存在于指定文件夹中。如果不这样做,它将在那里提取存档。

我计划执行此操作的方法是一一读取 .gz 存档中文件的文件名,并检查我的目录中是否已存在此类文件。但据我了解,gzip 不可能做到这一点。

理想情况下,我正在寻找这样的东西:

archive = gzipfile.GzipFile(source)

    for i in archive.getmembers():
        if os.path.isfile(destination + sep + i.name) and overwrite:
        ...
Run Code Online (Sandbox Code Playgroud)

这可能吗?

python gzip

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

如何检查列表中每个项目的"if condition"

我正在尝试针对一组非常具体的规则检查某个列表.在这个特定的例子中,我有一个退出代码列表,我想检查测试是否失败.如果其中一个退出代码不为0,则测试失败.

我目前的实施:

for exit_code in result_list:
    if exit_code is not 0:
        raise TestFailed
Run Code Online (Sandbox Code Playgroud)

问题:是否可以将前两行填入一行?最好这样做吗?

python design-patterns

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

这个 C++ 编译器优化的名称是什么(在它自己的实例上调用一个对象自己的构造函数),它是如何工作的?

我正在尝试学习 C++ 中的资源管理,在我的研究中我遇到了一个有趣的优化。基本上,当使用复制构造函数初始化堆栈上的对象时,该对象是一个右值对象(它是右值对象吗?),而不是调用构造函数然后调用移动构造函数,编译器只是调用原始对象的构造函数。

Object c(Object(1)); // This is the same as Object c(1);
Object c(Object(Object(Object(Object(Object(1)))))); // This is also the same as Object c(1);
Run Code Online (Sandbox Code Playgroud)
Expected flow:
1. Object(1) calls the constructor and creates a nameless Object that will be removed as soon as it's created.
2. c notices this is an rvalue, and calls the move constructor.
3. Destructor for Object(1) is called.
Run Code Online (Sandbox Code Playgroud)
Actual flow:
1. c(1) is called.
Run Code Online (Sandbox Code Playgroud)

这很聪明,但是..如何?这个技巧背后的机制是什么?即使 Object 的构造函数接受指针和许多参数,这也有效。

c++ compiler-optimization c++11

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