首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问日志文件并返回/打开其中写入的所有文件

访问日志文件并返回/打开其中写入的所有文件
EN

Stack Overflow用户
提问于 2016-03-14 07:15:17
回答 2查看 28关注 0票数 0

For Reference

我有一个python类,它解压一个归档文件,递归地迭代目录结构,然后返回文件进行进一步处理。在我的例子中,我想散列这些文件。我很难把文件还回去。这是我的观点。我创建了一个解压缩函数,该函数用解压后的文件的所有路径创建日志文件。然后我想访问这个日志文件,并返回所有的文件,这样我就可以在另一个python类中使用它们,因为processing.This似乎还不能工作。

日志文件的结构:

代码语言:javascript
运行
复制
/home/usr/Downloads/outdir/XXX.log
/home/usr/Downloads/outdir/Code/XXX.py
/home/usr/Downloads/outdir/Code/XXX.py
/home/usr/Downloads/outdir/Code/XXX.py

感兴趣的代码:

代码语言:javascript
运行
复制
@staticmethod
def read_received_files(from_log):
    with open(from_log, 'r') as data:
        data = data.readlines()
        for lines in data: 
            \\ This does not seem to work zet
            read_files = open(lines.strip())
            return read_files 
EN

回答 2

Stack Overflow用户

发布于 2016-03-14 07:23:19

我相信这就是你要找的:

代码语言:javascript
运行
复制
@staticmethod
def read_received_files(from_log):
    files = []
    with open(from_log, 'r') as data:
        for line in data:
            files.append(open(line.strip()))

    return files

您在迭代时返回,阻止打开其他文件。

票数 0
EN

Stack Overflow用户

发布于 2016-03-14 09:56:08

由于您主要关注的是存储在zip文件中的文件的元数据和散列,而不是文件本身,因此不需要将文件解压缩到文件系统。

相反,您可以使用ZipFile.open()方法通过一个类似文件的对象来访问文件的内容。可以使用每个文件的ZipInfo对象收集元数据。这是一个获取文件名和文件大小作为元数据的示例,以及文件的散列。

代码语言:javascript
运行
复制
import hashlib
import zipfile
from collections import namedtuple

def get_files(archive):
    FileInfo = namedtuple('FileInfo', ('filename', 'size', 'hash'))
    with zipfile.ZipFile(archive) as zf:
        for info in zf.infolist():
            if not info.filename.endswith('/'):  # exclude directories
                f = zf.open(info)
                hash_ = hashlib.md5(f.read()).hexdigest()
                yield FileInfo(info.filename, info.file_size, hash_)

for f in get_files('some_file.zip'):
    print('{}: {} {} bytes'.format(f.hash, f.filename, f.size))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35977094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档