将 gnupg 输出通过管道/流传输到 tarfile 中

2023-12-21

我有以下代码,但显然这不是真正的流媒体。这是我能找到的最好的,但它首先将整个输入文件读入内存。我想在解密巨大(>100Gb 文件)时将其流式传输到 tarfile 模块,而不使用所有内存

import tarfile, gnupg                                                                                                                                                                                                                                
gpg = gnupg.GPG(gnupghome='C:/Users/niels/.gnupg')                                                                         

with open('103330-013.tar.gpg', 'r') as input_file:                                                                                                                                                                                                   
    decrypted_data = gpg.decrypt(input_file.read(), passphrase='aaa')                                                       
    # decrypted_data.data contains the data                                                                                 
    decrypted_stream = io.BytesIO(decrypted_data.data)                                                                      

    tar = tarfile.open(decrypted_stream, mode='r|')                                                                                                                                                                                                 
    tar.extractall()                                                                                                                                                                                                                                
    tar.close()

显然,您不能使用 gpnupg 模块来使用真正的流,gnupg 模块总是将 gnupg 的整个输出读取到内存中。 因此,要使用真正的流媒体,您必须直接运行 gpg 程序。 这是示例代码(没有适当的错误处理):

import subprocess
import tarfile

with open('103330-013.tar.gpg', 'r') as input_file:
   gpg = subprocess.Popen(("gpg", "--decrypt", "--homedir", 'C:/Users/niels/.gnupg', '--passphrase', 'aaa'), stdin=input_file, stdout=subprocess.PIPE)
   tar = tarfile.open(fileobj=gpg.stdout, mode="r|")
   tar.extractall()
   tar.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 gnupg 输出通过管道/流传输到 tarfile 中 的相关文章

  • xlrd.biffh.XLRDError:Excel xlsx 文件;不支持[重复]

    这个问题在这里已经有答案了 我正在尝试使用读取启用宏的 Excel 工作表pandas read excel与 xlrd 库 它在本地运行良好 但是当我尝试将其推送到 PCF 时 我收到此错误 2020 12 11T21 09 53 441
  • 切片稀疏(scipy)矩阵

    我将不胜感激任何帮助 以理解从 scipy sparse 包中切片 lil matrix A 时的以下行为 实际上 我想根据行和列的任意索引列表提取子矩阵 当我使用这两行代码时 x1 A list 1 x2 x1 list 2 一切都很好
  • for 循环如何评估其参数

    我的问题很简单 Does a for循环评估它每次使用的参数 Such as for i in range 300 python 是否会为此循环的每次迭代创建一个包含 300 个项目的列表 如果是的话 这是避免这种情况的方法吗 lst ra
  • 希伯来语中的稀疏句子标记化错误

    尝试对希伯来语使用稀疏句子标记 import spacy nlp spacy load he doc nlp text sents list doc sents I get Warning no model found for he Onl
  • Jupyter Notebooks 不显示进度条

    我正在尝试在 Jupyter 笔记本中显示进度条 这是一台新电脑 我通常做的事情似乎不起作用 from tqdm import tqdm notebook example iter 1 2 3 4 5 for rec in tqdm not
  • 如何使用显式引用转储 YAML?

    递归引用非常适合ruamel yaml or pyyaml ruamel yaml dump ruamel yaml load A A id001 id001 然而 它 显然 不适用于普通引用 ruamel yaml dump ruamel
  • 更改 python tkinter canvas 中的线坐标

    我画了一条线tkinter Canvas现在我想移动一端 这可能吗 例如和itemconfig import tkinter tk tkinter Tk canvas tkinter Canvas tk canvas pack line c
  • Pandas 滚动窗口 Spearman 相关性

    我想使用滚动窗口计算 DataFrame 两列之间的 Spearman 和 或 Pearson 相关性 我努力了df corr df col1 rolling P corr df col2 P为窗口尺寸 但我似乎无法定义该方法 添加meth
  • 动态 __init_subclass__ 方法的参数绑定

    我正在尝试让类装饰器工作 装饰器会添加一个 init subclass 方法到它所应用的类 但是 当该方法动态添加到类中时 第一个参数不会绑定到子类对象 为什么会发生这种情况 举个例子 这是可行的 下面的静态代码是我试图最终得到的示例 cl
  • `list()` 被认为是一个函数吗?

    list显然是内置类型 https docs python org 3 library stdtypes html list在Python中 我看到底下有一条评论this https stackoverflow com a 53645813
  • 与 while 循环一样,如何跳过 for 循环中的步骤?

    我尝试像 while 循环一样跳过 for 循环中的几个步骤 在 while 循环中 步骤根据特定条件进行调整 如下面的代码所示 i 0 while i lt 10 if i 3 i 5 else print i i i 1 result
  • 在Python中计算内存碎片

    我有一个长时间运行的进程 不断分配和释放对象 尽管正在释放对象 但 RSS 内存使用量会随着时间的推移而增加 如何计算发生了多少碎片 一种可能性是计算 RSS sum of allocations 并将其作为指标 即便如此 我该如何计算分母
  • django-admin.py makemessages 不起作用

    我正在尝试翻译一个字符串 load i18n trans Well Hello there how are you to Hola amigo que tal 我的 settings py 文件有这样的内容 LOCALE PATHS os
  • PyTorch DataLoader 对并行运行的批次使用相同的随机种子

    有一个bug https tanelp github io posts a bug that plagues thousands of open source ml projects 在 PyTorch Numpy 中 当并行加载批次时Da
  • Python 声音(“铃声”)

    我想让一个 python 程序在完成任务时通过发出嘟嘟声来提醒我 目前 我使用import os然后使用命令行语音程序说 进程完成 我更愿意它是一个简单的 铃 我知道有一个函数可以用于Cocoa apps NSBeep 但我认为这与此没有太
  • 对数据帧的每 2 小时数据进行 Groupby

    我有一个数据框 Time T201FN1ST2010 T201FN1VT2010 1791 2017 12 26 00 00 00 854 69 0 87 1792 2017 12 26 00 20 00 855 76 0 87 1793
  • 如何在 robobrowser-python 中发出 POST 请求

    http robobrowser readthedocs org en latest api html http robobrowser readthedocs org en latest api html 我正在尝试使用 APIbrows
  • Python 通过从现有 csv 文件中过滤选定的行来写入新的 csv 文件

    只是一个问题 我试图将 csv 文件中的选定行写入新的 csv 文件 但出现错误 我试图读取的 test csv 文件是这样的 两列 2013 9 1 2013 10 2 2013 11 3 2013 12 4 2014 1 5 2014
  • Django 模型:如何使用 mixin 类来覆盖 django 模型以实现 save 等功能

    我想在每次保存模型之前验证值 所以 我必须重写保存函数 代码几乎是一样的 我想把它写在 mixin 类中 但失败了 我不知道如何写 super func 我英语不好 抱歉 class SyncableMixin object def sav
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可

随机推荐

  • 什么可以防止任何恶意软件在 ARM TrustZone 中引发 SMC 异常?

    我正在阅读有关 ARM TrustZone 的内容 我读到 当普通世界想要来自安全世界的功能时 他们会引发 SMC 异常 从而将数据传输到安全世界 我不明白的是 是什么阻止了任何恶意代码引发 SMC 异常 如果任何未经授权的软件都可以导致转
  • 如何让 SwiftUI 列表自动滚动?

    当向 ListView 添加内容时 我希望它自动向下滚动 我正在使用 SwiftUIList and a BindableObject作为控制器 新数据正在添加到列表中 List chatController messages id sel
  • 是否可以同时在多个画布上绘图?

    我所有的画布绘制函数都是这样开始的 function drawMe var canvas document getElementById canvas id var ctx null ctx canvas getContext 2d 但是我
  • WScript.Shell 在 FireFox 中不起作用

    我有以下 JavaScript 代码 实际上我必须在客户端启动一个exe function executeCommands var commandtoRun C WINDOWS notepad exe var oShell new Acti
  • 按自定义排序顺序对 jQuery 中的 Div 进行排序

    我正在尝试重新排序标签的子元素input通过比较 它们的类别属性对应于 Javascript 中的类别顺序 多变的category sort order 然后我需要删除其类别属性的div 没有出现在category sort order 预
  • 如何动态合并android表格布局中一个单元格中的行?

    如何通过表格布局在 android 中获得以下功能 如图所示 我需要将两个单元格合并第 5 行 第 1 列 and 行 6 列 1动态地 我必须替换那里的一张图像 我怎样才能实现这个目标 感谢您的回答 使用 GridLayout 而不是 T
  • 当用户切换电视源时在应用程序上管理 GCKDevices

    ios的Google Chromecast api有以下设备发现方法 void deviceDidComeOnline GCKDevice device manipulate UI self tableView reloadData voi
  • 从 Jenkins 管道中的 shell 步骤访问 Groovy 变量

    使用Jenkins 2 x 中的管道插件 https jenkins io doc book pipeline overview 我如何访问在阶段或节点级别的某个位置定义的 Groovy 变量 sh step 简单的例子 node stag
  • Angular JS ng-include 绑定问题

    我使用模板文件创建了一个寻呼机小部件 我在 HTML 页面中使用了两次 我有一个选择 转到页面 选项以及上一页和下一页的链接 问题是 当我使用选择框更新当前页面 然后使用上一页和下一页链接时 当前页面会更新 但选择框不会更新 请告诉我我做错
  • 类型别名和自引用

    例如 单链表节点可能定义如下 namespace example part1 class node node next int value 假设我们只有一个整数列表 此类允许有一个指向其自身类型的成员 因为无论底层数据结构的大小如何 指针都
  • Delphi 2009 函数被链接器消除

    我想使用该功能DateTimeToStr在调试项目时 我想使用评估 修改窗口或监视窗口 这总是会导致错误 函数被链接器消除 我确保该函数被项目使用 我还在我想要调试的函数中显式放置了一个调用 我还关闭了优化并重新编译了整个项目 我做了以下程
  • Android studio 和设备外部

    是否可以在 android studio 中使用外部设备模拟应用程序 我有一个设备连接到计算机 但是当您运行该应用程序时 它无法识别该设备 注意 接受未知来源的模式和调试模式已激活 转到模块的运行配置并更改 在那里 您可以选择要在模拟器 设
  • 使用深度学习突出显示句子中的重要单词

    我试图突出显示 imdb 数据集中的重要单词 这些单词最终有助于情感分析预测 数据集如下 X train 作为字符串的评论 Y train 0 或 1 现在 在使用 Glove 嵌入来嵌入 X train 值后 我可以将其输入神经网络 现在
  • Mongoose:根据 ID 从数组中删除对象(强制转换错误)

    我有一个看起来像这样的模型 mongoose Schema username String posts type Schema Types ObjectId ref Post 我有一个端点 我想传递一个 ObjectID app delet
  • 分两步使用类型安全属性访问递归解析对象

    我尝试将以下函数中的字符串类型替换为更具体的类型 以确保类型安全的属性访问 import get from lodash const obj foo foo bar a Hello b c World function factory na
  • 如何将 A00073 值转换为 9973 进行中 4gl

    我的列具有多个值 例如 A0045 A00065 我想将其转换为9945 9965 需要删除所有 0 和字符值并在该值之前添加 99 请帮忙 这可以通过多种方式来完成 这是一种方法 可能不是最好的 由于我没有数据库 因此我创建了一个临时表
  • 如何将 Docker 卷安装到 WSL2?

    我安装了适用于 Windows 的 Docker 并改用 WSL 2 Linux 容器 没有任何 Linux 知识 当我运行容器并将 Docker 卷安装到 Windows 文件夹时 我收到一条警告消息 告诉我应该将 Docker 卷安装到
  • 空手道 afterScenario 全局挂钩 [重复]

    这个问题在这里已经有答案了 是否可以配置afterScenario全局挂钩 我可以配置每个 feature像这样的文件 Background url baseMhsServiceUrl configure afterScenario fun
  • 在 LINQ to SQL 连接中使用 contains

    如何在没有精确匹配的情况下执行 LINQ to SQL 连接 例如 假设我有一张桌子form与数据John Smith 2 我想加入到这个领域Smith在表中name 像这样的东西 var query from f in db form j
  • 将 gnupg 输出通过管道/流传输到 tarfile 中

    我有以下代码 但显然这不是真正的流媒体 这是我能找到的最好的 但它首先将整个输入文件读入内存 我想在解密巨大 gt 100Gb 文件 时将其流式传输到 tarfile 模块 而不使用所有内存 import tarfile gnupg gpg