Abs*_*Abs 3 python ruby-on-rails
python中这个类的等价物是什么?https://gist.github.com/2594962
在PHP中,它允许您压缩字符串.
我试图在以下语言中找到等价物:Python,Ruby on Rails和ASP.
我希望有这些语言的内置函数.我在PHP中找不到一个.
当我说Zip时,我指的是Windows使用的标准算法.不是存档的意思.我目前使用该类来压缩字符串,base64对其进行编码并将其作为请求发送到内部API.
mar*_*eau 14
要使用与.zip
归档中使用的相同方法压缩字符串,只需zlib
直接使用该模块(这是Python的zipfile
模块所做的).这是一个简单的例子:
import zlib
teststr = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus
pretium justo eget elit eleifend, et dignissim quam eleifend. Nam vehicula nisl
posuere velit volutpat, vitae scelerisque nisl imperdiet. Phasellus dignissim,
dolor amet."""
cmpstr = zlib.compress(teststr.encode('utf-8'))
uncmpstr = zlib.decompress(cmpstr)
fmt = '{:>8}: (length {}) {!r}'
print(fmt.format('teststr', len(teststr), teststr))
print(fmt.format('cmpstr', len(cmpstr), cmpstr))
print(fmt.format('uncmpstr', len(uncmpstr), uncmpstr))
Run Code Online (Sandbox Code Playgroud)
输出:
teststr: (length 237) 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus\npretium justo eget elit eleifend, et dignissim quam eleifend. Nam vehicula nisl\nposuere velit volutpat, vitae scelerisque nisl imperdiet. Phasellus dignissim,\ndolor amet.'
cmpstr: (length 157) 'x\x9cMO[\x0e\xc30\x08\xfb\xef)8@\xd5\x93L\xd3\xae\x10%^\xcb\x94W\x03\xf4\xfc\xa3\x9d\xb4\xed\x07\tcc\xfb\xd6\x06\nq\x17+\x94Zn\x83\x84\x95B\x81\xce\x14[\x15D\x85\xda\xa0\x90\xb8\xb3D\xae+!\xb3.\xf4\xd8\x82 g\x93\xa9\x0f(\xbb\xfce\xa2\x8d\xb0B/\x8a\x0f\xf0\x135\xcd\xe4H\xe2\xb5\xb2\x08\x17\xda-\x94\xefm\xa1\xbbo\x076\x8e\x96\x039%O\xbd\x89a\xc0\xd1\xf3\xcb\xd1\xb2i\x0f\x1e\xe7`\r \x89\xae\x1d,\xbb\xe1\xa2\x13\x97\x8e\x91\x18\xff\x99~v\xf3\xf4iu6Z\xde\xf8\xa6X\r'
uncmpstr: (length 237) 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus\npretium justo eget elit eleifend, et dignissim quam eleifend. Nam vehicula nisl\nposuere velit volutpat, vitae scelerisque nisl imperdiet. Phasellus dignissim,\ndolor amet.'
Run Code Online (Sandbox Code Playgroud)
Python 有一个zipfile
模块可以让你读/写 zip 档案。
该zipfile.ZipFile
班有一个writestr()
可以在归档直接从字符串创建“文件”的方法。
所以不,您不必在存档之前将字符串写入文件。
问题编辑后更新
您说您不需要存档,但链接的 PHP 代码就是这样做的——创建一个 PK-Zip 存档。在 Python 中,您对zipfile
. 这是一个创建 zip 文件并向其中添加一个文件的示例——全部在内存中,没有物理文件。
import zipfile
from cStringIO import StringIO
f = StringIO()
z = zipfile.ZipFile(f, 'w', zipfile.ZIP_DEFLATED)
z.writestr('name', 'some_bytes_to_compress')
z.close()
output_string = f.getvalue()
Run Code Online (Sandbox Code Playgroud)
output_string
将是 PK-Zip 格式的压缩内容。
如果您同时控制发送端和接收端,并且不需要在一个数据块中发送多个压缩文件,那么使用 PK-Zip 就有点过分了。相反,您可以只使用zlib
实现 PK-Zip 压缩的模块。
import zlib
output_string = zlib.compress('some_bytes_to_compress')
Run Code Online (Sandbox Code Playgroud)
然后你可以解压缩它(假设是 Python):
decompressed_string = zlib.decompress(output_string)
Run Code Online (Sandbox Code Playgroud)
我不知道你到底需要什么,但你可能会觉得这很有趣。我在这里使用 zipfile 模块和类似字符串文件的对象
import zipfile
import StringIO
s = StringIO.StringIO() # s is a file like object
z = zipfile.ZipFile(s, 'w') # this is a zip archive
z.writestr('file1.txt', 'Hello, world') # create a "file" inside the archive called 'file1.txt' and write 'hello world' into it
z.close() # close the archive
print s.getvalue() # this is the content of the string
s.close() # close the string file-like object
Run Code Online (Sandbox Code Playgroud)
观看弦内PK开始
归档时间: |
|
查看次数: |
15993 次 |
最近记录: |