首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当使用subprocess.run()时,Python3如何将二进制数据传递给标准输入?

当使用subprocess.run()时,Python3可以通过以下方式将二进制数据传递给标准输入:

  1. 首先,需要将二进制数据存储到一个临时文件中。可以使用Python的open()函数以二进制写入模式打开一个文件,并将二进制数据写入该文件。
代码语言:txt
复制
with open('temp.bin', 'wb') as f:
    f.write(binary_data)
  1. 接下来,可以使用subprocess.run()函数来执行命令,并将临时文件的内容作为标准输入传递给该命令。需要将参数stdin设置为subprocess.PIPE,表示将标准输入重定向到一个管道。
代码语言:txt
复制
import subprocess

result = subprocess.run(['command'], stdin=subprocess.PIPE)
  1. 最后,将临时文件的内容通过管道传递给命令的标准输入。可以使用subprocess.Popen.communicate()方法来实现。
代码语言:txt
复制
with open('temp.bin', 'rb') as f:
    result = subprocess.run(['command'], stdin=subprocess.PIPE)
    result.communicate(input=f.read())

需要注意的是,以上代码中的'command'需要替换为实际的命令,用于处理接收到的二进制数据。

这种方法可以在Python3中将二进制数据传递给标准输入,并且可以适用于各种场景,例如调用其他程序处理二进制数据、执行系统命令等。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数计算(云原生、无服务器计算):https://cloud.tencent.com/product/scf
  • 腾讯云容器服务(云原生、容器化):https://cloud.tencent.com/product/tke
  • 腾讯云云服务器(服务器运维):https://cloud.tencent.com/product/cvm
  • 腾讯云对象存储(存储):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(区块链):https://cloud.tencent.com/product/tbaas
  • 腾讯云人工智能(人工智能):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(物联网):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发(移动开发):https://cloud.tencent.com/product/mad
  • 腾讯云音视频服务(音视频、多媒体处理):https://cloud.tencent.com/product/vod
  • 腾讯云数据库(数据库):https://cloud.tencent.com/product/cdb
  • 腾讯云网络安全(网络安全):https://cloud.tencent.com/product/ddos
  • 腾讯云CDN加速(网络通信):https://cloud.tencent.com/product/cdn
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python Subprocess库详解

) 在这个例子中,subprocess.run()的input参数用于将数据递给子进程的标准输入。...使用管道进行进程间通信 Subprocess库允许你使用管道(pipes)进行进程间通信。这在需要将一个进程的输出传递给另一个进程非常有用。...使用Subprocess处理非文本数据 如果你需要处理非文本数据,可以将text参数设置为False,并使用subprocess.PIPE捕获二进制输出: pythonCopy codeimport subprocess...父进程接收到Ctrl+C信号,将调用信号处理函数。 异步子进程管理 Subprocess库还提供了异步执行子进程的能力,适用于异步编程环境。...使用subprocess.Popen的encoding参数指定字符编码 subprocess.Popen的encoding参数允许你指定子进程的标准输入标准输出和标准错误输出的字符编码。

2.3K21

python的subprocess模块

universal_newlines: 该参数影响的是输入与输出的数据格式,比如它的值默认为False,此时stdout和stderr的输出是字节序列;该参数的值设置为True,stdout和stderr...命令需要通过列表的方式传入,shell为True,可直接传入命令 call()方法中的command可以是一个列表,也可以是一个字符串,作为字符串需要用原生的shell来执行: import subprocess...如果env=None,则默认从父进程继承环境变量 universal_newlines:不同系统的的换行符不同,该参数设定为true,则表示使用\n作为换行符 示例1,在/root下创建一个suprocesstest...(['df','-h']) 参数,Python解析,如果有管道符就不行了 subprocess.run('df -h | grep sda1', shell=True) shell=True是指不需要...subprocess.call()、subprocess.check_call()、subprocess.check_output()和subprocess.run()这些高级函数无法满足需求,我们可以使用

3K20
  • python执行系统命令

    python3中,推荐使用subprocess模块来执行系统命令,基本用法如下 # 导入模块>>> import subprocess# 执行系统命令 wc-l>>> cmd = subprocess.run...当然你也可以直接使用字符串参数,用法如下 >>> cmd = subprocess.run('ls -l', shell = True) 注意,必须设置shell参数的值为True才可以支持字符串写法,..., 对于联网下载数据等操作,设置超时时间,可以避免因为网络原因引起的阻塞。...控制标准输入的经典使用场景是运行交互式的命令,用法如下 >>> import subprocess# stdin 控制标准输入流# stdout 控制标准输出流>>> s = subprocess.Popen...又我们希望不显示程序的输出和报错信息,此时可以将标准输出和标准错误流重定向到/dev/null,写法如下 >>> subprocess.Popen(['ls', '-l'], stdout = subprocess.DEVNULL

    1.7K10

    Fuzz的基本框架结构

    创建Runner的类: 我么首先需要介绍的是Runner的概念:使用给定的输入来执行某些特定的程序,特定的程序通常是指要接受测试的某些程序或函数。...Runner本质上提供了一种run(input)方法:用于将input(字符串)传递给程序运行。...我们看到标准的调用cat简单地完成了这项工作,其输出cat与其输入相同: cat = ProgramRunner(program="cat")cat.run("hello") 输出:(CompletedProcess...Fuzzer的基类提供了一些创建输入的核心方法,随后run()将这些数据传送至Runner并返回结果;runs()可以设定发送的次数(trials) class Fuzzer(object):...RandomFuzzer,我们现在可以创建一个模糊器,在创建模糊器只需配置一次即可。

    1.1K20

    Python 执行系统命令

    执行命令但无法获取取命令输出,可以使用 os.system os.system() 是C语言 system() 函数的封装,返回命令的退出状态码,命令执行结果输出到标准输出(stdout/窗口...a接收返回值 print(a) # 理论上command是一个字符串,但实际看command还是得变为字节数组 # 命令中存在中文可能会报编码错误,此时可以自己给命令编一下码 # exit_code...该方法有以下参数 参数 作用 args 一般是一个字符串,是要执行的shell命令内容 bufsize 设置缓冲,负数表示系统默认缓冲,0表示无缓冲,正数表示自定义缓冲行数 stdin 程序的标准输入句柄...如果env=None,则默认从父进程继承环境变量 universal_newlines 不同系统的的换行符不同,该参数设定为true,则表示使用\n作为换行符。...需要设置shell=True(False,arges是列表,第一个参数是shell命令,后面的都是参数’,’ 隔开),须把args设为string,空格隔开,如下 >>> a = subprocess.Popen

    1.7K10

    subprocess:Python中创建子进程

    这对于运行生产或消费文本的程序尤其有好处,因为这个API支持通过新进行的标准输入和输出通道来回数据。 本篇,将详细介绍Python创建附加进行的库:subprocess。...系统常用的whoami命令,返回当前用户的名称,输出如下: 这里,我们使用subprocess.run调用了子进程运行windows命令。...对于run()函数启动的进程,它的标准输入输出通道会绑定到父进程的输入输出。这说明调用程序无法捕获命令的输出。不过,我们可以通过为stdout和stderr参数传入PIPE来捕获输出,以备以后处理。...直接使用Popen可以更好的控制如何运行命令以及如何处理输入和输出流。Popen的构造函数利用参数建立新进程,使父进程可以通过管道与之通信。 下面,我们来分别介绍进程间通信的方式。...一般使用input()进行用户输入数据

    52470

    Python中os.system()、subprocess.run()、call()、check_output()的用法

    shell=True ),也可以是一个列表( shell=False )stdin, stdout, stderr: 用于指定标准IO文件句柄,可以是: subprocess.PIPE...相当于把标准错误重定向到标准输入中) subprocess.DEVNULL: 用作 stdout, stderr 参数的值,相当于把输出内容重定向到 /dev/null 用户已经打开的文件对象或描述符...(整型数字)capture_output: 设置为 True ,相当于 stdout 和 stderr 参数都设置为 True 了,可以通过返回值对象访问标准输出和标准错误内容shell: 设置为...( stdout 参数为 PIPE )。..., shell=True) # shell 为 True ,args 是一个字符串ret = subprocess.run("ls -l", shell=True, capture_output

    73620

    Python模块学习:subprocess模块详解

    universal_newlines: 该参数影响的是输入与输出的数据格式,比如它的值默认为False,此时stdout和stderr的输出是字节序列;该参数的值设置为True,stdout和stderr...该参数的值是一个字符串,该命令的解释过程是与平台相关的,因此通常建议将args参数作为一个序列传递。...stdin, stdout, stderr: 分别表示程序标准输入、输出、错误句柄。preexec_fn: 用于指定一个将在子进程运行之前被调用的可执行对象,只在Unix平台下有效。...需要注意的是,这里读取的数据是缓冲在内存中的,所以,如果数据大小非常大或者是无限的,就不应该使用这个方法3 subprocess.Popen使用实例实例1>>> import subprocess>>>...subprocess.call()、subprocess.check_call()、subprocess.check_output()和subprocess.run()这些高级函数无法满足需求,我们可以使用

    68440

    Python 简单沙盒绕过

    os.system,这种情况下我们就可以使用 lambda 创建一个匿名函数,然后把表示命令的变量作为参数传递给这个匿名函数,最后再通过使用 os.system 作为装饰器来给我们的命令变量添加上系统执行的功能...每当导入新的模块,sys.modules 都将记录这些模块。字典 sys.modules 对于加载模块起到了缓冲的作用。某个模块第一次导入,字典 sys.modules 将自动记录该模块。...第二次再导入该模块,python 会直接到字典中查找,从而加快了程序运行的速度。...,或者我们想要导入的模块被 ban 掉,可以使用 python 的内置函数来进行间接调用。...https://blog.spoock.com/2019/10/08/proc/ LOAD段:表示一个从二进制文件映射到虚拟地址空间的段,其中保存了常量数据(如字符串),程序的目标代码等 /proc/self

    1.8K10

    使出Python的六脉神剑,让Python拥有无限扩展性

    Python执行外部命令的6种方法: 1. system函数 基本的调用格式如下: import os os.system("some_command with args"); system函数会将命令和参数传递给系统的...import os stream = os.popen("some_command with args") popen函数与os.system函数的功能相同,只是popen函数提供了一个用于操作文件的对象,可用使用标准输入输出的方式来访问文件中的数据...Python 3.5或更高版本,则可以使用新的subprocess.run函数,该函数与上面的代码非常相似,但是更加灵活,并在命令完成执行后返回CompletedProcess对象。...例如,如果用户正在输入字符串的某些/任何部分。如果不确定,请仅将这些方法与常量一起使用。为了更好地说明这一点,请看下面的代码。...harddisk && rm -rf /”,这将删除硬盘中的所有数据

    62730

    使用 Kubernetes 模糊测试

    本博客将重点介绍如何加速哑模糊测试,并讨论我在使用 Kubernetes 扩展哑模糊测试工具遇到的一些问题。...现在,关于这个格式错误的输入的“愚蠢”部分是我们只是从我们的二进制语料库中任意操作二进制的随机字节,然后在二进制上调用radare2 来处理和分析它。...模糊测试工具的一个关键组成部分是超时值subprocess.run如果二进制文件只是长时间挂起进程,它将被视为崩溃并保存到崩溃目录(cdir)。...现在,再次遇到断点,我们可以单步执行,直到导致问题的代码。 果然,它似乎是__func_name_from_ordstrdup中的函数调用。...让我们退后一步,看看数据是如何传递给易受攻击的函数的。 数据如何传递给易受攻击的函数 易受攻击的函数__func_name_from_ord只在一个文件中被调用,ne.c特别是在第 488 行。

    1.6K20

    python之路day5

    a=os.popen("dir").read()会保存命令输出结果,并赋值给a,此时print(a)就可以输出到屏幕 2、commands模块:只使用于linux 正题: subprocess.run(...=subprocess.Popen("sleep 10;echo 'hello'",shell=Ture,stdout=subprocess.PIPE,stderr=subprocess.PIPE),使用...res.stdout.read()时会等待命令执行结束才能显示,而poll方法可检测命令是否执行结束,0表示执行结束,在编程可与read结合使用,优化程序。...可用参数: args:shell命令,可以是字符串或者序列类型 cwd:用于设置子进程的当前目录 stdin,stdout,stderr:分别表示程序的标准输入、输出、错误句柄 env:用于指定子进程的环境变量...Encapsulation封装:在类中对数据的赋值、内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法。

    63110

    爬虫之urllib包以及request模块和parse模块

    urllib简介 简介 Python3中将python2.7的urllib和urllib2两个包合并成了一个urllib库 Python3中,urllib库包含有四个模块: urllib.request...request的方式是post,使用参数data,用于填写传递的表单信息,将data填好表单信息,准备传入urlopen 前,还需要利用urllib.parse里的urlencode()函数转换格式...另外通过设置代理可以改变用户提交的IP地址。 urllib.error  待续...... urllib.parse   待续...... urllib.robotparser  待续.........encode() response = request.urlopen(url,data) print(response.read().decode()) 上面的小示例是直接用给urlopen的data参数的形式来传递数据...,也可以将参数数据封装给一个Request对象,然后将对象再传递给urlopen。

    1.1K00

    【Coding】聊聊字符编码那些事儿

    "字符串形式"输入,后面跟上所属的进制。...文本文件中存放的数据在用户读取可以按照编码类型还原成字符形式,我们可以直接打开,如下: 二进制文件中存放的数据则不能还原成字符形式,像图片、视频、音频、可执行文件等都属于是二进制文件...: 非打印字符: 0~32,规定了一些特殊的用途, 终端设备或者打印机遇上这些字符, 就要做一些约定的动作,比如空格、换行等。...如图,UTF-8就是Unicode的一种实现方式,数据在计算机内存中被处理,统一使用Unicode编码。需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。...使用python3编码(加b表示bytes类型): 使用python3解码: base64对二进制数进行编码,因此主要处理对象是二进制文件

    1.4K20

    Python之编码

    Python3更加规范,重复代码少; 2、Python2默认的编码是ASCII码,无法正确识别中文,而Python3默认的代码是utf-8,能够正确识别中文; 3、Python2中print打印后面可以不用加...(),但是Python3中print打印必须加上(),否则会报错; 4、Python2中有range和xrange(生成器),但是Python3中只有range ; 5、Python3中的input,...:在一定范围内多个变量被赋值的是一个相同的数值,其占用的内存地址是一样的。...)) 字符串也有小数据池概念,不过没有什么具体准确的标准,暂时只发现两个规律 1、不能含有特殊字符; 2、s*20 还是同一个地址,s*21以后都是两个地址 剩下的list、dict、tuple、set...都没有小数据池概念。

    1.1K100
    领券