我正在Windows 10上运行Python3.6.4和秋季创建者更新。我试图解压缩一个维基媒体数据转储文件,特别是。
这个文件在命令行上使用7z解压缩没有问题,但是在第一个数据块上失败,从Python解压缩程序输出的数据长度为零。守则如下:
import bz2
def decompression(qin, # Iterable supplying input bytes data
qout): # Pipe to next process - needs bytes data
deco
def compress():
if args['compression'] == 'Yes':
for day in getdate():
x = str(day.strftime('%Y/%m/%d')).replace("/0","/")
print (x)
loc_postfix = log_type+"/"+x
location = "s3://bucket
我得到了从这个大规模解压缩的代码。但它解压缩了批处理文件所在文件夹中的所有内容。我希望它将其解压缩到特定的文件夹或其单独的文件夹。
注意:我的bz2文件位于批处理文件所在文件夹之外的各个文件夹中。
下面是我使用的脚本:
for /R "C:\Users\victor\Desktop\MASTERS\color feret\disc 1\data\images" %%I in ("*.bz2")
do ("%ProgramFiles%\WinRAR\WinRAR.exe" x -y -o"%%~dpnI" "%%~fI
看起来Python2.6.1默认情况下并不从源代码编译bz2库。
我没有lib-dynload/bz2.so
添加它的最快方法是什么(不需要从头开始安装Python )?
OS is Linux 2.4.32-grsec+f6b+gr217+nfs+a32+fuse23+tg+++opt+c8+gr2b-v6.194 #1 SMP Tue Jun 6 15:52:09 PDT 2006 i686 GNU/Linux
IIRC我只使用了--prefix标志。
我有一个超过10 of的BZ2文件。我想阅读它而不将它解压缩成一个临时文件(它将超过50 to )。
用这种方法:
import bz2, time
t0 = time.time()
time.sleep(0.001) # to avoid / by 0
with bz2.open("F:\test.bz2", 'rb') as f:
for i, l in enumerate(f):
if i % 100000 == 0:
print('%i lines/sec' % (i/(time.time(
我已经使用bz2库在内存中动态地解压缩和读取文件。然而,我已经通读了文档,似乎不能简单地解压缩文件来在文件系统上创建一个全新的文件,其中包含没有内存存储的解压缩数据。当然,您可以使用BZ2Decompressor逐行读取,然后将其写入文件,但这将非常慢。(解压缩大量文件,50GB+)。有没有一些我忽略的方法或库,可以在不使用子进程调用终端命令的情况下实现与python中的终端命令bz2 -d myfile.ext.bz2相同的功能?
bz2速度如此慢的原因示例:
通过bz2 -d解压该文件:104秒
对解压缩文件的分析(只涉及逐行阅读):183秒
with open(file_src) as