日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python解压7z文件_如何读取用7z压缩的文本文件?

發布時間:2023/12/20 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python解压7z文件_如何读取用7z压缩的文本文件? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這將允許您迭代行。它的一部分是從我在answer中找到的一些代碼派生出來的。

在這個時間點(pylzma-0.5.0)上,py7zlib模塊沒有實現允許存檔成員作為字節流或字符流讀取的API,它的ArchiveFile類只提供一個read()函數,該函數一次解壓縮并返回成員中的未壓縮數據。考慮到這一點,最好的方法是通過Python生成器將字節或行作為緩沖區迭代返回。

下面是后者,但如果問題是存檔成員文件本身太大,則可能沒有幫助。

下面的代碼應該可以在Python3.x和2.7中使用。import io

import os

import py7zlib

class SevenZFileError(py7zlib.ArchiveError):

pass

class SevenZFile(object):

@classmethod

def is_7zfile(cls, filepath):

""" Determine if filepath points to a valid 7z archive. """

is7z = False

fp = None

try:

fp = open(filepath, 'rb')

archive = py7zlib.Archive7z(fp)

_ = len(archive.getnames())

is7z = True

finally:

if fp: fp.close()

return is7z

def __init__(self, filepath):

fp = open(filepath, 'rb')

self.filepath = filepath

self.archive = py7zlib.Archive7z(fp)

def __contains__(self, name):

return name in self.archive.getnames()

def readlines(self, name, newline=''):

r""" Iterator of lines from named archive member.

`newline` controls how line endings are handled.

It can be None, '', '\n', '\r', and '\r\n' and works the same way as it does

in StringIO. Note however that the default value is different and is to enable

universal newlines mode, but line endings are returned untranslated.

"""

archivefile = self.archive.getmember(name)

if not archivefile:

raise SevenZFileError('archive member %r not found in %r' %

(name, self.filepath))

# Decompress entire member and return its contents iteratively.

data = archivefile.read().decode()

for line in io.StringIO(data, newline=newline):

yield line

if __name__ == '__main__':

import csv

if SevenZFile.is_7zfile('testing.csv.7z'):

sevenZfile = SevenZFile('testing.csv.7z')

if 'testing.csv' not in sevenZfile:

print('testing.csv is not a member of testing.csv.7z')

else:

reader = csv.reader(sevenZfile.readlines('testing.csv'))

for row in reader:

print(', '.join(row))

總結

以上是生活随笔為你收集整理的python解压7z文件_如何读取用7z压缩的文本文件?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。