den*_*uan 3 python stringio python-2.7
我们的团队必须如下所示:
这个:
buf = StringIO.StringIO()
gzip.GzipFile(fileobj=buf, mode='wb').write(foo)
...
Run Code Online (Sandbox Code Playgroud)
还有这个:
buf = StringIO.StringIO()
tmp = gzip.GzipFile(fileobj=buf, mode='wb')
tmp.write(foo)
...
Run Code Online (Sandbox Code Playgroud)
哪一个更pythonic?
编辑:我已经尝试/ catch来做错误处理工作,但哪一个更pythonic?
eca*_*mur 11
GzipFile完成后需要关闭对象,因此单行不起作用.相反,使用上下文管理器表达式:
buf = StringIO.StringIO()
with gzip.GzipFile(fileobj=buf, mode='wb') as tmp:
tmp.write(foo)
Run Code Online (Sandbox Code Playgroud)
单行gzip.GzipFile(fileobj=buf, mode='wb').write(foo)是非常危险的,因为它取决于在GzipFile表达式结尾处被垃圾收集,以便流被刷新.如果未能发生(例如使用Jython),则buf不会包含预期结果.