这个问题告诉我如何检查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) 从文档中,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) 我在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) 使用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编写了这部分代码:
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") 但不能正常工作...值是一个字符串?我不知道如何考虑这个变量..
当我想捕获异常时,我发现自己这样做,总是运行一些特定的代码,然后重新引发原始异常:
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方式吗?
我的项目在根包下嵌套了一个子包,如下所示:
mypackage/
__init__.pytopmodule.pysubpackage/
__init__.pynested.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='???')所需的日志记录模式?