小编Jac*_*ing的帖子

我应该何时/何处检查最低 Python 版本?

这个问题告诉我如何检查Python的版本。对于我的包,我至少需要 Python 3.3:

MIN_VERSION_INFO = 3, 3

import sys
if not sys.version_info >= MIN_VERSION_INFO:
    exit("Python {}.{}+ is required.".format(*MIN_VERSION_INFO))
Run Code Online (Sandbox Code Playgroud)

但是这个检查应该在哪里/什么时候发生?

我想为通过pip(sdist 和 wheel)或python setup.py install. 就像是:

$ pip -V
pip x.x.x from ... (Python 3.2)
$ pip install MyPackage
Python 3.3+ is required.

$ python -V
Python 3.2
$ python setup.py install
Python 3.3+ is required.
Run Code Online (Sandbox Code Playgroud)

python compatibility pip

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

为什么并非所有()都停止在第一个False元素上?

文档中,all相当于:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True
Run Code Online (Sandbox Code Playgroud)

那为什么我得到这个输出:

# expecting: False

$ python -c "print( all( (isinstance('foo', int), int('foo')) ) )"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'foo'
Run Code Online (Sandbox Code Playgroud)

什么时候:

# expecting: False

$ python -c "print( isinstance('foo', int) )"
False
Run Code Online (Sandbox Code Playgroud)

python

4
推荐指数
2
解决办法
318
查看次数

来自TeamCity构建代理的"无法在Simulator中运行应用程序"

我在TeamCity构建代理输出中看到此错误:

...
[14:17:50][Step 2/2] Starting: /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project Foobar/Foobar.xcodeproj -scheme foobarNightly SYMROOT=/Users/Me/buildAgent/work/e60c5dca158b2d23/Foobar/build OBJROOT=/Users/Me/buildAgent/work/e60c5dca158b2d23/Foobar/build test -sdk iphonesimulator8.1
[14:17:50][Step 2/2] in directory: /Users/Me/buildAgent/work/e60c5dca158b2d23
...
[14:17:53][Step 2/2] FoobarTests (BUILD)
[14:17:53]=== BUILD TARGET FoobarTests OF PROJECT Foobar WITH CONFIGURATION Debug ===
[14:17:53]Check dependencies
[14:17:53]Testing failed:
[14:17:53]  Test target FoobarTests encountered an error (Unable to run app in Simulator If you believe this error represents a bug, please attach the log file at /var/folders/yy/lc1xnprn1w3g98mcy5mprm5c0000gn/T/com.apple.dt.XCTest-status/Session-2014-11-04_11:17:51-qkVM7k.log)
[14:17:53][Step 2/2] ** TEST FAILED **
[14:17:54][Step 2/2] Process exited with code …
Run Code Online (Sandbox Code Playgroud)

teamcity xcode ios ios-simulator

4
推荐指数
2
解决办法
2377
查看次数

如何以编程方式访问coverage.py结果?

使用coverage.py,我可以生成如下报告:

Name                      Stmts   Miss  Cover   Missing
-------------------------------------------------------
my_program.py                20      4    80%   33-35, 39
my_other_module.py           56      6    89%   17-23
-------------------------------------------------------
TOTAL                        76     10    87%
Run Code Online (Sandbox Code Playgroud)

如何以编程方式访问87覆盖范围结果数据中的值,以用作另一个程序的输入?

python coverage.py

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

在 Python 中将十六进制字符串拆分为块

我用Python编写了这部分代码:

for line in response.body.split("\n"):
    if line != "": 
        opg = int(line.split(" ")[2])
        opc = int(line.split(" ")[3])
        value = line.split(" ")[5]
        if command == 'IDENTIFY':
            if opg==opcodegroupr and opc==opcoder:
                print line
                ret['success'] = "IDENTIFY: The value is %s " % (value)
                self.write(tornado.escape.json_encode(ret))
                self.finish()
Run Code Online (Sandbox Code Playgroud)

变量“line”是这样创建的:

1363005087 2459546910990453036 151 88 4 0x15000000
Run Code Online (Sandbox Code Playgroud)

每个字段都是整数,但最后一个字段不是。最后一个字段是一个十六进制数字。

我会采用这个十六进制数并在每个字节分割字节之后。例如,我希望 0x15000000 被分成 15 00 00 00。

我能怎么做?我尝试使用 value.encode("hex") 但不能正常工作...值是一个字符串?我不知道如何考虑这个变量..

python string hex

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

仅在发生异常时才重新引发异常的更好语法?

当我想捕获异常时,我发现自己这样做,总是运行一些特定的代码,然后重新引发原始异常:

try:
    error = False
    # do something that *might* raise an exception
except Exception:
    error = True
finally:
    # something I *always* want to run
    if error:
        raise
Run Code Online (Sandbox Code Playgroud)

我正在使用该标志,因为raise没有先前的异常调用会引发一个TypeError.没有旗帜,有更多的Pythonic方式吗?

python exception

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

如何在Python日志记录语句中包括模块的相对路径?

我的项目在根包下嵌套了一个子包,如下所示:

  • mypackage/
    • __init__.py
    • topmodule.py
    • subpackage/
      • __init__.py
      • nested.py

我的目标是获取格式如下的日志记录:

mypackage/topmodule.py:123: First log message
mypackage/subpackage/nested.py:456: Second log message
Run Code Online (Sandbox Code Playgroud)

这样路径就可以在我的终端中单击


我尝试了以下格式。

  • '%(modulename).pys:%(lineno): %(message)s' 不可点击(点必须为斜线):

    mypackage.topmodule.py:123: First log message
    mypackage.subpackage.nested.py:456: Second log message
    
    Run Code Online (Sandbox Code Playgroud)
  • 'mypackage/%(filename)s:%(lineno): %(message)s' 不适用于子包:

    mypackage/topmodule.py:123: First log message
    mypackage/nested.py:456: Second log message
    
    Run Code Online (Sandbox Code Playgroud)
  • '%(pathname)s:%(lineno): %(message)s' 产生可点击的路径,但是它们很长,以至于切断了我的其余日志记录:

    /Users/jacebrowning/Documents/mypackage/topmodule.py:123: First log message
    /Users/jacebrowning/Documents/mypackage/subpackage/nested.py:456: Second log message
    
    Run Code Online (Sandbox Code Playgroud)

我是否可以传递给我logging.basicConfig(format='???')所需的日志记录模式?

python logging

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