我试图找出用Python压缩流的最佳方法zlib.
我有一个类似文件的输入流(input,下面)和一个输出函数,它接受类似文件(output_function,下面):
with open("file") as input:
output_function(input)
Run Code Online (Sandbox Code Playgroud)
我想input在发送之前对gzip压缩块进行压缩output_function:
with open("file") as input:
output_function(gzip_stream(input))
Run Code Online (Sandbox Code Playgroud)
看起来gzip模块假定输入或输出都是gzip的磁盘文件...所以我假设zlib模块是我想要的.
但是,它本身并没有提供一种简单的方法来创建类似于文件的流......而它支持的流压缩是通过手动将数据添加到压缩缓冲区,然后刷新缓冲区来实现的.
当然,我可以写一个包装器zlib.Compress.compress和zlib.Compress.flush(Compress由它返回zlib.compressobj()),但我担心缓冲区大小错误或类似的东西.
那么,使用Python创建流式,gzip压缩文件的最简单方法是什么?
编辑:为了澄清,输入流和压缩输出流都太大output_function(StringIO(zlib.compress(input.read())))而不适合内存,所以类似的东西并没有真正解决问题.
当我使用Java小程序时,它们往往很慢,不能很好地与浏览器环境集成,并且通常需要点击几下("不,我不想让这个未签名的应用程序免费使用我的硬盘" ).
所以,我很好奇.
这些问题难以克服吗?是否有那些与浏览器体验完美集成的Java小程序(例如,设计良好的Flash应用程序的方式?)你能指出真正"漂亮"的Java小程序的任何例子吗?
我问这个是因为我想知道我是否应该更加认真地看待浏览器中的Java,或者Flash是否会在可预见的未来保持主导地位.
编辑:无意的火焰诱饵已被删除.对不起导致的任何进攻.
我有一个像这样的Django类:
class Breakfast(m.Model):
# egg = m.OneToOneField(Egg)
...
class Egg(m.Model):
breakfast = m.OneToOneField(Breakfast, related_name="egg")
Run Code Online (Sandbox Code Playgroud)
是否有可能有breakfast.egg == None,如果没有Egg相关的Breakfast?
编辑:忘记提及:我宁愿不改变related_name类似的东西related_name="_egg",然后有类似的东西:
@property
def egg(self):
try:
return self.egg
except ...:
return None
Run Code Online (Sandbox Code Playgroud)
因为我egg在查询中使用该名称,我宁愿不必将查询更改为使用_egg.
是否有某种交互式ActionScript解释器?类似于Firebug的JavaScript命令行或Python的交互式shell?
很多时候,我发现自己想在Python中使用一个简单的"转储"对象,其行为类似于JavaScript对象(即,其成员可以使用.member或使用['member']).
通常我会把它放在以下的顶部.py:
class DumbObject(dict):
def __getattr__(self, attr):
return self[attr]
def __stattr__(self, attr, value):
self[attr] = value
Run Code Online (Sandbox Code Playgroud)
但这有点蹩脚,并且该实现至少存在一个错误(尽管我不记得它是什么).
那么,标准库中有类似的东西吗?
并且,为了记录,简单的实例化object不起作用:
>>> obj = object() >>> obj.airspeed = 42 Traceback (most recent call last): File "", line 1, in AttributeError: 'object' object has no attribute 'airspeed'
编辑 :(当,应该看到这一个来了)...别担心!我不是想用Python编写JavaScript.我经常发现我想要的地方就是在我还在试验的时候:我有一些"东西"的集合,这些东西不太适合放入字典,但也不适合拥有自己的课程.
如果我有一个打开文件的句柄,是否可以在从文件系统中删除对该文件的所有引用后创建该文件的硬链接?
例如,像这样:
fd = fopen("/tmp/foo", "w");
unlink("/tmp/foo");
fwrite(fd, "Hello, world!\n");
create_link_from_fd(fd, "/tmp/hello");
fclose(fd);
Run Code Online (Sandbox Code Playgroud)
具体来说,我想这样做,以便我可以安全地写入大型数据文件,然后原子地将它们移动到位,而不必担心如果我的程序在写入文件的过程中被杀死后自己清理.
我正在编写一个gevent.socket用于通信的Python客户端+服务器.有没有什么好方法可以测试代码的套接字级操作(例如,验证与无效证书的SSL连接是否会被拒绝)?或者只是spawn一个真正的服务器最简单?
编辑:我不相信"天真"的模拟将足以测试SSL组件,因为涉及复杂的交互.我错了吗?或者有更好的方法来测试SSL的东西吗?
我怎么能让Django在遇到它时告诉我,例如,在渲染模板时出现未定义的变量错误?
我已经尝试了明显的DEBUG = True和TEMPLATE_DEBUG = True,但他们没有帮助.
例如,来自EXPLAIN文档:
EXPLAIN SELECT * FROM tenk1;
QUERY PLAN
-------------------------------------------------------------
Seq Scan on tenk1 (cost=0.00..458.00 rows=10000 width=244)
什么width=244意思?