小编ap0*_*ap0的帖子

如果未定义,则定义True会导致语法错误

我今天在别人的代码中找到了以下构造:

try: True, False
except NameError: True = 1==1; False = 1==0
Run Code Online (Sandbox Code Playgroud)

据我了解这一点,它定义TrueFalse,如果他们尚未确定.所以如果定义它们就不应该抛出NameError-Exception,对吧?

我已经在shell中尝试了这个,它向我展示了它 SyntaxError: can't assign to keyword

我的问题是,如果定义了True和False,为什么它甚至会出现语法错误?如果我的系统上有True和False,那么它是否应该超过异常处理并且不显示语法错误?

python python-3.x

20
推荐指数
2
解决办法
1468
查看次数

解析JPEG SOS标记

有一个问题具有相同的标题但不幸的是它对我没有帮助.

我正在尝试解析SOS标记的数据.我能找到的所有文档都说在marker(0xFFDA)之后是一个两个字节的数字,它定义了这个段的长度 - 例如这里 - 和大多数可变大小的标记一样.但在这种情况下,我似乎无法正确理解它.它适用于所有其他标记类型.

我检查了多个文件,但是无法做到这一点.这个数字是不是定义了完整的SOS字段有多长?因此对于基线JPEG,应该有一个SOS片段,在此之后应该跟随End of Image标记.如果它是渐进的,则可以存在多个SOS段,但仍然应该具有长度字段.

我有一张带SOF0标记的照片所以它应该是基线.我相信这是正确的SOFn标记,因为可以在该标记之后找到图像分辨率.使用十六进制编辑器,我找到了3个0xFFDA标记,所有标记都0x000C在以下2个字节中.因此,据我所知,该段应始终为12字节长.但是在所有3种情况下,在12字节数据之后没有新标记.我想最后一个是我正在寻找的扫描,因为如果值0xFF出现,则接着是0x00- 除了重置标记.

那两个字节0xFFDA不是长度字段吗?

编辑: 所以,由于评论和答案,似乎没有实际压缩数据的长度字段,只有知道它结束的方式似乎是解码它.

为什么Baseline DCT图像有多次扫描?我明白为什么它有两个; 主图像和缩略图,但第三次扫描是什么?

但还有一件事.根据DRI标记(定义重启间隔),它包含扫描应具有重启标记的值0xFFD0 - 0xFFD7.但我似乎错过了解或者说我做得不对.例如,标记包含0x0140重新启动间隔的值.在下面的扫描中,我从头开始搜索第一个,0xFFD0但它是在862个字节而不是320个之后.

jpeg file-format

11
推荐指数
2
解决办法
8923
查看次数

我应该把shebang行放在每个python文件中吗?

我正在进行一个中型python(2.7)项目,我导入了多个文件.我有一个主要的python文件启动程序.其他文件包含类定义,函数等.

我想知道我是否应该将shebang行放在每个python文件中,或者只是为了启动我的程序而运行的那个?

python shebang

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

使用PIL处理截断的图像

我正在尝试使Python 2.7 PIL库与JPEG图像一起使用,这些JPEG图像仅作为来自HDD图像的流提供,并且不完整。

我已经设置了选项:

ImageFile.LOAD_TRUNCATED_IMAGES = True
Run Code Online (Sandbox Code Playgroud)

并尽可能地加载流(或者更好地说:据我100%确信此数据仍是图像,而不是其他文件类型)。我已经测试了不同的东西,据我所知(对于JPEG),PIL仅在找到0xFFDA(开始扫描标记)后才将其作为有效的JPEG图像接受。这是我如何加载数据的简短示例:

from PIL import Image
from StringIO import StringIO

ImageFile.LOAD_TRUNCATED_IMAGES = True

with open("/path/to/image.raw", 'rb') as fp:
    fp.seek("""jump to position in image where JPEG starts""")
    data = fp.read("""number of bytes I know that those belong to that jpeg""")
    img = Image.open(StringIO(data)) # This would throw exception if the data does 
                                     # not contain the 0xffda marker
    pixel = img.load()               # Would throw exception if LOAD_TRUNCATED_IMAGES = false

    height,width = img.size
    for …
Run Code Online (Sandbox Code Playgroud)

python jpeg image python-imaging-library

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

从栈(Frame)对象中获取函数对象

logging我为我称为 的模块编写了一个自定义日志记录类call。对于这个类,我希望将其放置在任何函数/方法中,并记录函数名称及其参数以及调用函数时使用的所有值。

这对于类方法来说效果很好

Foo.bar(self, a=1, b=2, c=3, *args=(), **kwargs={'something': 4})
Run Code Online (Sandbox Code Playgroud)

使用这个最小的例子

import logging
import inspect

def call(logger):
    fname = []  # Function name including module and class
    fargs = []  # Arguments of function including positional and named arguments

    parentframe = inspect.stack()[1][0]
    module      = inspect.getmodule(parentframe)

    if module and module.__name__ != "__main__":
        fname.append(module.__name__)

    codename = parentframe.f_code.co_name

    if "self" in parentframe.f_locals:
        fname.append(parentframe.f_locals["self"].__class__.__name__)

    fobj = getattr(parentframe.f_locals["self"].__class__, codename)

    if codename != "<module>":
        fname.append(codename)

    argspec = inspect.formatargspec(*inspect.getfullargspec(fobj))
    args = argspec[1:-1].split(",")

    for arg …
Run Code Online (Sandbox Code Playgroud)

python-3.x

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

SQLite WHERE-Clause每列?

SQLite是否提供一种在表的每一列中搜索searchkey的方法?

SELECT * FROM table WHERE id LIKE ...
Run Code Online (Sandbox Code Playgroud)

选择...在列中找到的所有行id。但是取而代之的是只在列id中搜索,如果要找到搜索字符串,我想在每列中搜索。我相信这行不通:

SELECT * FROM table WHERE * LIKE ...
Run Code Online (Sandbox Code Playgroud)

那可能吗?或下一个简单的方法是什么?

我使用Python 3查询SQLite数据库。执行查询并返回数据后,我是否应该通过字典进行搜索?

sql sqlite

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