python利用subprocess执行交互命令

Python 中 subprocess模块的使用 文章目录前言1、subprocess模块简介一、subprocess模块的遍历函数1、call函数(1)参数命令为数组时(2)参数命令为字符串时2、check_call函数3、check_output函数 前言 subprocess在jupyter notebook中被调用时与在python 中调用会有一些不一样的地方。 1、subprocess模块简介 subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。 这个模块用来创建和管理子进程。它提供了高层次. 阅读详情

已经知道,os.system可以方便的利用python代码执行一些像ping、ipconfig之类的系统命令,但却只能得到命令执行是否成功,不能获得命令成功执行后的结果,像下面这样:

>>> s = os.system("ping www.baidu.com")

正在 Ping www.a.shifen.com [220.181.38.150] 具有 32 字节的数据:
来自 220.181.38.150 的回复: 字节=32 时间=18ms TTL=52
来自 220.181.38.150 的回复: 字节=32 时间=19ms TTL=52
来自 220.181.38.150 的回复: 字节=32 时间=23ms TTL=52
来自 220.181.38.150 的回复: 字节=32 时间=22ms TTL=52

220.181.38.150 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 18ms,最长 = 23ms,平均 = 20ms
>>> s
0
>>> type(s)
<class 'int'>
>>>

在上面的代码中,利用os.system执行“ping www.baidu.com”并把结果赋值给s,但在下面可以看到,s的内容是int类型的0(表示命令执行成功),并不是命令的执行结果。如果只是需要判断命令是否执行成功,那完全可以使用这种方法,但如果想要获取命令执行的结果呢?可以使用subprocess这个模块。

一:subprocess的作用

subprocess模块主要用于创建子进程,并连接它们的输入、输出和错误管道,获取它们的返回状态。通俗地说就是通过这个模块,你可以在Python的代码里执行操作系统级别的命令,比如“ipconfig”、“du -sh”等等。subprocess模块替代了一些老的模块和函数,比如:

os.system
os.spawn*

subprocess过去版本中的call(),check_call()和check_output()已经被run()方法取代了。run()方法为3.5版本新增。大多数情况下,推荐使用run()方法调用子进程,执行操作系统命令。在更高级的使用场景,你还可以使用Popen接口。其实run()方法在底层调用的就是Popen接口。

二:subprocess的run方法

subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False, encoding=None, errors=None)

功能:执行args参数所表示的命令,等待命令结束,并返回一个CompletedProcess类型对象。

下面是run参数的作用:

  • args:表示要执行的命令。必须是一个字符串,字符串参数列表。

  • stdin、stdout和stderr:子进程的标准输入、输出和错误。其值可以是subprocess.PIPE、subprocess.DEVNULL、一个已经存在的文件描述符、已经打开的文件对象或者None。subprocess.PIPE表示为子进程创建新的管道。subprocess.DEVNULL表示使用os.devnull。默认使用的是None,表示什么都不做。另外,stderr可以合并到stdout里一起输出。

  • timeout:设置命令超时时间。如果命令执行时间超时,子进程将被杀死,并弹出TimeoutExpired异常。

  • check:如果该参数设置为True,并且进程退出状态码不是0,则弹出CalledProcessError异常。

  • encoding:如果指定了该参数,则stdin、stdout和stderr可以接收字符串数据,并以该编码方式编码。否则只接收bytes类型的数据。

  • shell:如果该参数为True,将通过操作系统的shell执行指定的命令,如果执行命令时遇见权限不足的境况,可以将此参数设置为True

注意,run()方法返回的不是我们想要的执行结果或相关信息,而是一个CompletedProcess类型对象。

>>> r = subprocess.run("ping www.baidu.com")

正在 Ping www.a.shifen.com [220.181.38.150] 具有 32 字节的数据:
来自 220.181.38.150 的回复: 字节=32 时间=17ms TTL=52
来自 220.181.38.150 的回复: 字节=32 时间=17ms TTL=52
来自 220.181.38.150 的回复: 字节=32 时间=19ms TTL=52
来自 220.181.38.150 的回复: 字节=32 时间=18ms TTL=52

220.181.38.150 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 17ms,最长 = 19ms,平均 = 17ms
>>> type(r)
<class 'subprocess.CompletedProcess'>
>>> r
CompletedProcess(args='ping www.baidu.com', returncode=0)
>>>

可以看到,run方法的执行结果是一个CompletedProcess类型对象。

下面是CompletedProcess类型对象的一些属性:

args 启动进程的参数,通常是个列表或字符串。

returncode 进程结束状态返回码。0表示成功状态。

stdout 获取子进程的stdout。通常为bytes类型序列,None表示没有捕获值。如果你在调用run()方法时,设置了参数stderr=subprocess.STDOUT,则错误信息会和stdout一起输出,此时stderr的值是None。

stderr() 获取子进程的错误信息。通常为bytes类型序列,None表示没有捕获值。

check_returncode() 用于检查返回码。如果返回状态码不为零,弹出CalledProcessError异常。

获取状态码:

r = subprocess.run("ping www.baidu.com")

正在 Ping www.a.shifen.com [220.181.38.150] 具有 32 字节的数据:
来自 220.181.38.150 的回复: 字节=32 时间=35ms TTL=52
来自 220.181.38.150 的回复: 字节=32 时间=29ms TTL=52
来自 220.181.38.150 的回复: 字节=32 时间=16ms TTL=52
来自 220.181.38.150 的回复: 字节=32 时间=18ms TTL=52

220.181.38.150 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 16ms,最长 = 35ms,平均 = 24ms>>> r.returncode
0

获取命令执行后的内容:

run()方法返回的是一个CompletedProcess类型对象,不能直接获取我们通常想要的结果。要获取命令执行的结果或者信息,在调用run()方法的时候,请指定stdout=subprocess.PIPE。

>>> ret = subprocess.run('dir', shell=True, stdout=subprocess.PIPE)
>>> ret
CompletedProcess(args='dir', returncode=0, stdout=b' \xc7\xfd\xb6\xaf\xc6\xf7 C \xd6\xd0\xb5\xc4\xbe\xed\xca\xc7 Windows 10\r\n \xbe\xed\xb5\xc4\xd0\xf2\xc1\xd0\xba\xc5\xca\xc7 02DE-BFF0\r\n\r\n C:\\Users\\lwy \xb5\xc4\xc4\xbf\xc2\xbc\r\n\r\n2019/12/31  10:29    <DIR>          .\r\n2019/12/31  10:29    <DIR>          ..\r\n2019/10/16  10:27    <DIR>          .3T\r\n2019/09/23  20:31    <DIR>          .anaconda\r\n2019/10/07  13:14    <DIR>          .android\r\n2019/07/23  09:54    <DIR>          .astropy\r\n2019/12/28  19:01             4,807 .bash_history\r\n2019/09/26  18:19    <DIR>          .conda\r\n2019/09/26  18:19               151 .condarc\r\n2019/10/07  10:18    <DIR>          .config\r\n2019/11/02  11:50             1,126 .dbshell\r\n2019/07/31  16:49               181 .gitconfig\r\n2019/07/22  20:31    <DIR>          .ipython\r\n2019/09/23  16:15    <DIR>          .keras\r\n2019/11/06  21:47    <DIR>          .matplotlib\r\n2019/08/01  09:36                37 .minttyrc\r\n2019/10/06  20:53    <DIR>          .mitmproxy\r\n2019/10/01  15:20                 0 .mongorc.js\r\n2019/08/30  15:19    <DIR>          .oracle_jre_usage\r\n2019/07/21  23:57    <DIR>          .PyCharm2019.1\r\n2019/12/10  17:04                25 .python_history\r\n2019/07/31  16:04    <DIR>          .rdm\r\n2019/07/31  16:38                35 .rediscli_history\r\n2019/07/22  20:31    <DIR>          .spyder-py3\r\n2019/09/17  17:51             5,339 .viminfo\r\n2019/12/12  13:21    <DIR>          3D Objects\r\n2019/12/12  13:21    <DIR>          Contacts\r\n2019/12/31  13:41    <DIR>          Desktop\r\n2019/12/18  15:47    <DIR>          Documents\r\n2019/12/30  16:34    <DIR>          Downloads\r\n2019/12/12  13:21    <DIR>          Favorites\r\n2019/10/15  16:36    <DIR>          Funshion\r\n2019/12/12  13:21    <DIR>          Links\r\n2019/12/12  13:21    <DIR>          Music\r\n2019/07/21  23:58    <DIR>          OneDrive\r\n2019/12/12  13:21    <DIR>          Pictures\r\n2019/12/12  13:21    <DIR>          Saved Games\r\n2019/12/12  13:21    <DIR>          Searches\r\n2019/12/31  10:27    <DIR>          test22\r\n2019/12/12  13:21    <DIR>          Videos\r\n               9 \xb8\xf6\xce\xc4\xbc\xfe         11,701 \xd7\xd6\xbd\xda\r\n              31 \xb8\xf6\xc4\xbf\xc2\xbc 51,676,090,368 \xbf\xc9\xd3\xc3\xd7\xd6\xbd\xda\r\n')
>>> type(ret)
<class 'subprocess.CompletedProcess'>
>>>

可以看到,这时候返回的内容就是命令的执行结果了,是一个CompletedProcess的类型,也可以通过指定编码使返回对象是一个字符串类型。

>>> ret = subprocess.run('dir', shell=True, stdout=subprocess.PIPE).stdout.decode("gbk")
>>> ret
' 驱动器 C 中的卷是 Windows 10\r\n 卷的序列号是 02DE-BFF0\r\n\r\n C:\\Users\\lwy 的目录\r\n\r\n2019/12/31  10:29    <DIR>          .\r\n2019/12/31  10:29    <DIR>          ..\r\n2019/10/16  10:27    <DIR>          .3T\r\n2019/09/23  20:31    <DIR>          .anaconda\r\n2019/10/07  13:14    <DIR>          .android\r\n2019/07/23  09:54    <DIR>          .astropy\r\n2019/12/28  19:01             4,807 .bash_history\r\n2019/09/26  18:19    <DIR>          .conda\r\n2019/09/26  18:19               151 .condarc\r\n2019/10/07  10:18    <DIR>          .config\r\n2019/11/02  11:50             1,126 .dbshell\r\n2019/07/31  16:49               181 .gitconfig\r\n2019/07/22  20:31    <DIR>          .ipython\r\n2019/09/23  16:15    <DIR>          .keras\r\n2019/11/06  21:47    <DIR>          .matplotlib\r\n2019/08/01  09:36                37 .minttyrc\r\n2019/10/06  20:53    <DIR>          .mitmproxy\r\n2019/10/01  15:20                 0 .mongorc.js\r\n2019/08/30  15:19    <DIR>          .oracle_jre_usage\r\n2019/07/21  23:57    <DIR>          .PyCharm2019.1\r\n2019/12/10  17:04                25 .python_history\r\n2019/07/31  16:04    <DIR>          .rdm\r\n2019/07/31  16:38                35 .rediscli_history\r\n2019/07/22  20:31    <DIR>          .spyder-py3\r\n2019/09/17  17:51             5,339 .viminfo\r\n2019/12/12  13:21    <DIR>          3D Objects\r\n2019/12/12  13:21    <DIR>          Contacts\r\n2019/12/31  13:41    <DIR>          Desktop\r\n2019/12/18  15:47    <DIR>          Documents\r\n2019/12/30  16:34    <DIR>          Downloads\r\n2019/12/12  13:21    <DIR>          Favorites\r\n2019/10/15  16:36    <DIR>          Funshion\r\n2019/12/12  13:21    <DIR>          Links\r\n2019/12/12  13:21    <DIR>          Music\r\n2019/07/21  23:58    <DIR>          OneDrive\r\n2019/12/12  13:21    <DIR>          Pictures\r\n2019/12/12  13:21    <DIR>          Saved Games\r\n2019/12/12  13:21    <DIR>          Searches\r\n2019/12/31  10:27    <DIR>          test22\r\n2019/12/12  13:21    <DIR>          Videos\r\n               9 个文件         11,701 字节\r\n              31 个目录 51,681,050,624 可用字节\r\n'
>>> type(ret)
<class 'str'>
>>>

三:subprocess的Popen方法

并不是所有的操作系统命令都像‘dir’或者‘ipconfig’那样单纯地返回执行结果,还有很多像‘python’这种交互式的命令,你要输入点什么,然后它返回执行的结果。subprocess中的Popen方法,可以执行一些交互性的命令。run方法也可以进行一些输入,不过很不方便,也不是以代码的形式驱动的,想要了解的同学可以看下文末大佬的原文。

Popen的用法和参数与run()方法基本类同,但是它的返回值是一个Popen对象,而不是CompletedProcess对象。

>>> r = subprocess.Popen("dir", shell=True)>>> type(r)
<class 'subprocess.Popen'>
>>> r
<subprocess.Popen object at 0x000001921134EC48>
>>>

要‘python’命令功能,可以按下面的例子操作:

import subprocess

s = subprocess.Popen("python", stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
s.stdin.write(b"import os\n")
s.stdin.write(b"print(os.environ)")
s.stdin.close()

out = s.stdout.read().decode("GBK")
s.stdout.close()
print(out)

另外,也可以把需要执行的后续命令卸载一个txt文件里,打开这个文件并赋值给stdin这个参数:

f = open("111.txt", "r+")

s = subprocess.Popen("python",stdout=subprocess.PIPE, stdin=f, shell=True)

out = s.stdout.read().decode("utf-8")
s.stdout.close()
print(out) 

111.txt文件中的内容是:

 import os
 print(os.getcwd())

注意:每行代码后面要加换行。

Python系列:使用python的subprocess执行命令、交互、等待、是否结束、解析JSON结果 使用python的subprocess执行命令、交互、等待、是否结束、解析JSON结果 阅读详情

相关推荐

Python 3 利用 subprocess 实现管道交互操作读写通信

在上述代码中,我们首先使用 subprocess.Popen() 方法启动了一个子进程,该子进程执行了命令“ls -l”。我们将标准输出重定向到了一个管道中,以便我们可以在父进程中读取子进程的输出。在这段代码中,我们启动了一个 grep 子进程,该子进程将所有包含“foo”的行打印出来。我们向该子进程的标准输入中写入了一行“hello foo”,然后从子进程的标准输出中读取了数据,并打印了该数据。除了从子进程的标准输出中读取数据外,我们还可以向子进程的标准输入中写入数据。

. 1420

使用python的subprocess执行命令、交互、等待、是否结束、解析JSON结果

Python的subprocess模块提供了一种在Python中调用外部命令的方法。它允许您在Python程序中启动新进程,连接到它们的输入/输出/错误管道,并等待它们完成。

小龙在线 2万+

CTF密码学奇技淫巧:当Base64遇到ROT13与Atbash

本文深入解析CTF竞赛中Base64、ROT13与Atbash的复合编码技术,提供Python实现与CyberChef可视化处理方案,帮助选手掌握密码学题目的解题技巧。通过NewStarCTF2025实战案例,对比脚本化与可视化工具的优劣,提升Web安全竞赛中的编码处理能力。

weixin_29001683的博客 509

python - 系统交互操作(subprocess)

本文摘于云游道士链接:https://www.cnblogs.com/yyds/p/7288916.html 个人简化,便于查询. 命令行指令的执行通常有两个比较关注的结果: 命令执行的状态码--表示命令执行是否成功 命令执行的输出结果--命令执行成功后的输出 早期的Python版本中,主要是通过os.system()、os.popen().read()等函数来...

dixian4894的博客 604

Visual C++与WPF混合开发:C++/CLI桥接技术实现现代化桌面应用

在桌面应用开发领域,混合编程技术是连接不同技术栈、复用核心资产的关键手段。其核心原理在于通过特定的桥接层,实现托管代码与非托管代码之间的互操作,从而打破语言和运行时环境的壁垒。这项技术的核心价值在于,它允许开发者将高性能、高稳定性的原生C++业务逻辑库,与现代化、高表现力的WPF用户界面无缝结合,避免了重写核心代码的巨大成本和风险。在工业控制、数据可视化、上位机软件等对性能和界面均有高要求的应用场景中,这种架构尤为适用。本文以C++/CLI作为桥接技术,详细演示了如何构建一个包含原生C++核心层、C++/C

weixin_33146151的博客 278

Verilog实战:手把手教你实现四路组相联Cache(附完整代码解析)

本文提供了一份详细的Verilog实战指南,手把手教你实现一个四路组相联Cache。内容涵盖从设计规格、核心存储阵列、LRU替换策略到状态机设计的完整流程,并附有代码解析与优化技巧,旨在帮助硬件设计者掌握Cache控制器的RTL实现与调试方法。

pp12345的博客 518

python subprocess 命令注入_python利用subprocess执行交互命令

已经知道,os.system可以方便的利用python代码执行一些像ping、ipconfig之类的系统命令,但却只能得到命令执行是否成功,不能获得命令成功执行后的结果,像下面这样:1 >>> s = os.system("ping www.baidu.com")23 正在 Ping www.a.shifen.com [220.181.38.150] 具有 32字节的数据:4 来...

weixin_39624094的博客 1428

三、STM32F103ZET6最小系统

stm32最小系统除去主控CPU外,需要包含,电源电路,复位电路,BOOT电路,时钟电路(因为stm32有内置时钟,对时钟要求不高的话,可以不要)。NRST引脚其实芯片已经用一个约40K的电阻上拉了,所以理论上来说是不需要再外接上拉电阻的,但我看大家都是有外接上拉的,心里没有底,不管这么多,先预留着。吃过亏,特意查看了芯片手册资料,下图是官方建议的供电方案,图片来自stm32f103zet6数据手册。首先明白目标,单纯的学习软件知识并不是我希望的,我还希望会硬件设计,这样后面才能摆脱开发板。

sevendecsdn的博客 6460

python subprocess使用_python利用subprocess执行交互命令

已经知道,os.system可以方便的利用python代码执行一些像ping、ipconfig之类的系统命令,但却只能得到命令执行是否成功,不能获得命令成功执行后的结果,像下面这样:1 >>> s = os.system("ping www.baidu.com")23 正在 Ping www.a.shifen.com [220.181.38.150] 具有 32字节的数据:4 来...

weixin_32060429的博客 1225

024、反激变换器的短路保护设计

本文详细探讨了反激变换器短路保护的设计要点与实践经验。作者通过实际案例分析了短路时反激拓扑的电流特性,指出初级峰值电流限制是最基础的保护手段,但需配合打嗝模式使用。文章重点剖析了打嗝模式设计的三个关键陷阱:频率设定、退出条件和软启动衔接。同时强调次级侧辅助保护、变压器参数优化、环路响应协调的重要性,并比较了自恢复与锁死方案的适用场景。最后提出实测验证的四个关键点和设计经验:不盲信芯片手册、保护电路独立设计、充分留有余量、进行破坏性测试。全文以工程实践为导向,为反激电源的可靠短路保护提供了系统性解决方案。

Jack010169的博客 244

Yolov8-pose关键点检测:训练实战篇 | 手部关键点检测

yolo8-pose实战检测手部关键点并优化。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 3397

Python Subprocess模块

我们使用subprocess.run()函数来执行zip命令,并使用-r参数来递归地压缩文件,将file1.txt和file2.txt压缩为archive.zip。使用unzip命令可以解压文件,如果我们想要排除某个文件夹,可以在压缩命令中使用-x参数来指定要排除的文件夹。你可以使用concurrent.futures.ProcessPoolExecutor来并行执行多个命令,从而提高程序的性能。在这个例子中,我们使用subprocess.run()函数来执行ls -l命令,并捕获其输出。

mywpython的博客 1306

什么是 SAP ABAP AMDP?

SAP HANA是SAP开发的一种内存数据库管理系统,它具有出色的性能和处理大规模数据的能力。为了充分利用SAP HANA的性能,SAP引入了AMDP技术,以便将数据库操作推送到数据库服务器执行,从而减少数据传输和处理时间。AMDP方法通常需要输入参数和输出参数。输入参数用于传递数据到SQLScript代码,而输出参数用于接收SQLScript代码的结果数据。ENDMETHOD.ENDCLASS.我们定义了一个输入参数来传递销售订单数据,以及一个输出参数来接收计算结果。ENDMETHOD.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 908

Python中subprocess学习

生命不息奋斗不止! subprocess的目的就是启动一个新的进程并且与之通信。 subprocess模块中只定义了一个类: Popen。可以使用Popen来创建进程,并与进程进行复杂的交互。它的构造函数如下: subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=No

maoyongfan3的专栏 956

R3LIVE项目实战(3) —双目相机与激光雷达 lidar_camera_calib联合标定

lidar_camera_calib是一个在无目标环境中,用于高分辨率LiDAR(例如Livox)和摄像机之间准确的外部标定工具。我们的算法可以在室内和室外场景中运行,并且只需要场景中的边缘信息。如果场景适合,我们可以实现类似于或甚至超过基于目标的方法的像素级准确度。我们使用标定的外部参数给点云上色,并与实际图像进行比较。A和C是点云的局部放大视图。B和D是与A和C中的点云对应的摄像机图像的部分。

几度春风里的博客 4059

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python中subprocess_Python中subprocess库的用法介绍

本篇文章给大家带来的内容是关于Python中subprocess库的用法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。介绍使用subprocess模块的目的是用于替换os.system等一些旧的模块和方法。导入模块>>> import subprocess命令执行call()执行由参数提供的命令,把数组作为参数运行命令。其功能类似于os.system(cmd...

weixin_39592315的博客 403

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

模块 subprocess

import subprocess# subprocess 是对os.system, os.spawn, os.popen的替换# sub_tmp1 = subprocess.call(['df', '-hT'], shell=False)# sub_tmp2 = subprocess.call(['du', '/home/hinimix', '--max-depth=1']) # # 执行命令...

weixin_30758821的博客 72

python 控制终端执行的subprocess.getoutput函数

devices = subprocess.getoutput('ios-deploy -c') print(devices) 如上代码中,subprocess.getoutput函数首先在终端执行命令 ios-deploy -c 然后获取linux 中shell终端命令执行的结果,以字符串格式保存到devices;subprocess还有其他函数,是和shell终端交互的,以后用到...

weixin_30261095的博客 7382

Python的subprocess模块总结

subprocess意在替代其他几个老的模块或者函数,比如:os.system os.spawn* os.popen* popen2.* commands.*subprocess最简单的用法就是调用shell命令了,另外也可以调用程序,并且可以通过stdout,stdin和stderr进行交互。subprocess的主类subprocess.Popen( args,...

weixin_33910385的博客 132

Python subprocess模块详解

subprocess模块是Python的标准库中的一部分,它允许与外部进程进行交互。这对于执行系统命令、调用其他可执行文件、处理数据流以及与其他进程通信非常有用。无论是需要执行简单的命令还是需要与复杂的外部程序进行交互,subprocess都可以胜任。在接下来的内容中,我们将学习如何使用subprocess模块来执行外部命令、处理输入输出、捕获错误信息,并探讨一些高级用法。我们还会讨论一些安全性方面的注意事项,以确保您的程序不受到潜在的安全漏洞的威胁。Python的subprocess。

涛哥聊Python 508

我眼中的subprocess

os模块 入门 管道 进程交互 py py 运行结果 总结 最近打算写个”远程控制“小工具,”胖客户端“这边功能已经开发完毕了。试想一下这样的场景,你的笔记本电脑在图书馆正常的放着,然后你去了教学区上课去了。然后你想看一下自己电脑前有没有人,然后就可以通过手机发送一条命令,让笔记本电脑拍照,并发送给手机。...

weixin_33964094的博客 171

subprocess.Popen()

从的python2.4版本开始,可以用子这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值。子意在替代其他几个老的模块或函数,例如:os.system,os.spawn *,os.popen *,popen2。,命令。subprocess模块可用于执行复杂的系统命令,包括os.popen()不适用的交互模式的场景,例如python 相互场景 import subprocessobj = subprocess.Popen(['python'], stdin=sub..

mihaoyun.com的专栏 1069

Python与shell交互os.system、 os.popen、 subprocess

这篇文章主要介绍了Python与shell的3种交互方式介绍,本文讲解了 os.system、 os.popen、 subprocess 模块等3种方法,需要的朋友可以参考下。   问题概述 考虑这样一个问题,有hello.py脚本,输出”hello, world!”;有TestInput.py脚本,等待用户输入,然后打印用户输入的数据。那么,怎么样把hello.py输出内容发送给T...

飘过的春风 5204

python subprocess

#! /usr/bin/env python# -*- coding:utf-8 -*-# 专门用于执行系统命令import subprocess#call():执行命令,并返回执行状态#ret = subprocess.call('ipconfig')# Popen():# 使用场景:1.将一个进程的执行输出作为另一个进程的输入# 2.先进入到某个输入环境,然后再执行一系列的...

weixin_33748818的博客 135

sys.stdout.flush()以及subprocess的用处

sys.stdout.flush()立即把stdout缓存内容输出。 subprocess与shell进行交互,执行shell命令等。 执行shell命令集合: subprocess.check_output("git checkout master",shell=True) subprocess.check_output(["git", "checkout", "maste...

weixin_30532837的博客 689
上一篇: Python继承扩展内置类
下一篇: Python 内置函数 :eval、exec、hash、help、callable
Python热爱者
博客等级 码龄7年 3057粉丝 1330原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值