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

使用Popen在没有控制台的情况下在pythonw中运行进程

在没有控制台的情况下在 Pythonw 中运行进程,可以使用 subprocess 模块中的 Popen 类。Popen 类可以用来创建一个新的进程,并返回一个进程对象,该对象可以用来与新创建的进程进行交互。

以下是一个使用 Popen 类在 Pythonw 中运行进程的示例代码:

代码语言:python
代码运行次数:0
复制
import subprocess

# 创建一个新的进程
process = subprocess.Popen(['python', 'script.py'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

# 等待进程执行完毕
process.wait()

# 获取进程的输出和错误信息
output, error = process.communicate()

# 打印输出和错误信息
print('Output:', output.decode('utf-8'))
print('Error:', error.decode('utf-8'))

在上面的代码中,我们使用 subprocess.Popen 创建了一个新的进程,并将其输出和错误信息通过管道传递给当前进程。然后,我们使用 process.wait() 等待进程执行完毕,并使用 process.communicate() 获取进程的输出和错误信息。最后,我们将输出和错误信息打印到控制台上。

需要注意的是,由于 Pythonw 不支持控制台,因此我们需要将 Popen 类的 stdoutstderr 参数设置为 subprocess.PIPE,以便将输出和错误信息通过管道传递给当前进程。同时,我们需要使用 decode('utf-8') 方法将输出和错误信息从字节串转换为字符串。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Pytest系列(30)- 使用 pytest-xdist 分布式插件,如何保证 scope=session 的 fixture 在多进程运行情况下仍然能只运行一次

,这意味着在不同的测试过程中,要求高级范围的 fixture(如:session)将会被多次执行,这超出了预期,在某些情况下可能是不希望的 尽管 pytest-xdist 没有内置支持来确保 scope...fixture 需要确保只运行一次的话,可以用上面的方法,直接套用,然后改需要改的部分即可(这个后面详细讲解) 官方原话:这项技术可能并非在每种情况下都适用,但对于许多情况下,它应该是一个起点,在这种情况下...scope=session 的 fixture 很明显执行了三次,三个进程下的三个测试用例得到的数据不一样,明显不会是我们想要的结果 使用官方解决方法的栗子rt #!...可以将数据保存在环境变量中 os.environ 两个进程跑三个测试用例文件 还是上面栗子的代码 运行命令 pytest -n 2 --alluredir=tmp 运行结果 ?...可以看到 test_3 的测试用例就没有读缓存文件了,每个进程只会读一次缓存文件,记住哦!

1.7K20
  • Appium之常用python+adb指令集合

    在编写脚本过程中,特别是使用python脚本操作Android设备时,常常需要去调用adb指令来辅助测试,下面就列举下在做自动化测试时经常使用的adb指令 1、查看包名和activity adb shell...#操作设备的power键 3、重启设备操作 os.popen("adb reboot") #直接(热)重启 4、打开指定应用(package/.activity) os.popen("adb shell...input keyevent 3") #切换至后台 6、查看系统内存情况 os.popen("adb shell dumpsys meminfo") 7、获取wifi信息 os.popen("...adb shell dumpsys wifi ") 8、查看进程占用CPU情况 os.popen(" top -m 20 -d 2 ") #top -m 进程数 -d 秒 9、查看设备电量信息...os.popen(" dumpsys battery ") 10、截图操作 os.popen(" adb shell screencap -p /sdcard/screen.png ") 11、跑Monkey

    1.2K10

    利用python实现操控手机

    客户端在开发计算机上运行。您可以通过发出 adb 命令来从命令行终端调用客户端。 守护进程 (adbd):在设备上运行命令。守护进程在每个设备上作为后台进程运行。...服务器:管理客户端和守护进程之间的通信。服务器在开发机器上作为后台进程运行。...,然后存放到任意地址后,再将这个platform-tools的地址添加到环境变量中,然后在控制台窗口中输入adb,如果看到以下的情况,就说明安装完成了。...但是如果说安排好固定的流程,比如一些游戏的刷金币的话,没有复杂的操作,只有单一的点击事件的话,用adb还是相当方便的,只要写好循环,持续的发送adb命令,就可以不断的的运行操作了。...在python中,要使用adb的话,只需要一个os的库就可以 ?

    2.1K20

    小白也能掌握的Python部署应用技术

    10定时任务运行报错:操作员或系统管理员拒绝了请求的解决方法 解决办法:首先确保python解释器在进程列表中退出,打开控制面板->管理工具->本地安全策略,选择安全设置->本地策略->安全选项,在右边列表中找到域控制器...,在定时任务设置运行时间计划,而exe部署需要将定时运行代码写入脚本后打包。...当然,你也可以在编辑器中运行程序,确保程序不会被关闭或者设置定时任务控制服务的开启关闭。...生成的文件放在同目录dist下。-F(注意大写)是所有库文件打包成一个exe,-w是不出控制台窗口。...这种方法不一定能成功,如果你的exe不符合服务的规范,可能会启动失败 在第一种方法失败的情况下,我们可以在官网下载instsrv.exe 和 srvany.exe 两个小工具注册服务。

    1.6K20

    Python Subprocess库详解

    超时处理 在实际应用中,我们可能希望设置子进程的最长运行时间,以避免因子进程无法正常退出而导致父进程一直等待。...在这个例子中,我们使用subprocess.STARTUPINFO()创建了一个STARTUPINFO对象,并通过设置dwFlags属性创建了一个新的控制台窗口。...使用timeout参数处理超时 Subprocess库的timeout参数是在3.3版本中引入的新功能,它为我们提供了一种优雅地处理子进程运行超时的方式。...使用subprocess.Popen的timeout参数设置超时时间 subprocess.Popen的timeout参数允许你设置子进程的最长运行时间,以避免因子进程无法正常退出而导致父进程一直等待。...使用subprocess.Popen的close_fds参数关闭文件描述符 subprocess.Popen的close_fds参数允许你在子进程中关闭不必要的文件描述符。

    2.5K21

    python 调用cmd,不显示cmd黑

    python 调用系统命令的方式有很多 1.1   os.system(command)        在一个子shell中运行command命令,并返回command命令执行完毕后的退出状态。...这实际上是使用C标准库函数system()实现的。这个函数在执行command命令时需要重新打开一个终端,并且无法保存command命令的执行结果。...对command的执行实际上是按照{command;} 2>&1的方式,所以output中包含控制台输出信息或者错误信息。output中不包含尾部的换行符。...使用subprocess模块可以创建新的进程,可以与新建进程的输入/输出/错误管道连通,并可以获得新建进程执行的返回状态。...Popen类有Popen.stdin,Popen.stdout,Popen.stderr三个有用的属性,可以实现与子进程的通信。

    3.9K10

    为你的 Python 程序写个启动工具箱

    为了方便他人使用,我们常把图形界面打包成 exe 文件。但是如果我们只是为了自己使用方便的话,我们有必要把程序打包成几十乃至上百兆的 exe 文件吗?没有必要。我们只要能够快速启动图形界面就可以了。...start 后面的第一个字符串表示你的pythonw.exe 文件所在位置,一般在你的 Python 安装目录下面,和 python.exe 在同一目录。...关键点一: 这个程序的核心思想就是再开一个进程来执行 py 文件,但是此时程序的路径为启动管理器的路径。所以说,如果你要打开的程序,比方说“PDF阅读器”,涉及到了文件路径,一定要使用绝对路径。...startDetched 方法可以在主进程之外新开一个进程。也就是说,如果我们打开或者关闭 “PDF阅读器” ,并不影响启动管理器的运行。...数据库保存的信息,就是关键点三中提到的 button 的属性。

    1.4K20

    python中执行DOS命令的3种方法小

    使用Popen模块产生新的process 现在大部分人都喜欢使用Popen。Popen方法不会打印出cmd在linux上执行的信息。的确,Popen非常强大,支持多种参数和模式。...使用前需要from subprocess import Popen, PIPE。但是Popen函数有一个缺陷,就是它是一个阻塞的方法。如果运行cmd时产生的内容非常多,函数非常容易阻塞住。...一般情况下我们通过args参数来设置所要运行的程序。如果将参数shell设为 True,executable将指定程序使用的shell。...Popen.pid  获取子进程的进程ID。 Popen.returncode  获取进程的返回值。如果进程还没有结束,返回None。...使用commands.getstatusoutput方法 这个方法也不会打印出cmd在linux上执行的信息。这个方法唯一的优点是,它不是一个阻塞的方法。即没有Popen函数阻塞的问题。

    2.3K20

    python中的subprocess

    程序通常执行序列或字符串的第一项,但可以通过使用明确的参数进行设置。 在UNIX上,shell = False(默认):在这种情况下,Popen类使用os.execvp()来执行程序的子进程。...如果参数是一个序列,第一项指定命令字符串,其他的将被视为附加的shell命令的参数。 在Windows:Popen类通过使用CreateProcess()执行这个子进程来对字符串操作。...注意: 如果没有找到执行程序,所有在本节中的函数都有可能以静默状态失败;这个模块会抛出OSError异常 在以下的例子中, 我们假设subprocess 模块是"from subprocess import...Unix系统中, os.popen2, os.popen3 与 os.popen4 同样可以在没有shell介入的情况下直接传递给程序 以序列形式执行命令行 这种方法可以用下面的方法替换: (...Unix系统中, popen2 也可以在没有shell介入的情况下直接传递给程序以序列形式执行命令行.

    1.6K30

    python调用linux执行命令

    在Linux系统中,Python可以使用subprocess模块调用操作系统命令,实现与Linux系统的交互。...在Linux系统中,我们可以使用subprocess模块来执行任何系统命令,包括常见的shell命令、系统管理命令、网络命令等等。...该函数的第一个参数是一个字符串列表,表示要执行的命令和参数。在本例中,我们分别执行了ls、pwd和ifconfig命令,并将它们的输出打印到控制台上。...除了run()函数外,subprocess模块还提供了其他函数,例如Popen()函数和call()函数。Popen()函数可以启动一个新的进程,并返回一个Popen对象,可以用来与进程进行交互。...call()函数和run()函数类似,也可以执行命令并返回结果,但它没有返回Popen对象。

    5.1K40

    python之调用系统命令 原

    一、python中执行cmd 目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码...使用os.popen调用test.sh的情况:python调用Shell脚本,有两种方法:os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容...Popen.pid 获取子进程的进程ID。 Popen.returncode 获取进程的返回值。如果进程还没有结束,返回None。...即没有Popen函数阻塞的问题。使用前需要import commands。...不管参数是一个路径还是文件 os.system() 函数用来运行shell命令 3.os进程 os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果

    2.3K40

    Python标准库06 子进程 (subprocess包)

    这里的内容以Linux进程基础和Linux文本流为基础。subprocess包主要功能是执行外部的命令和程序。比如说,我需要使用wget下载文件。我在Python中调用wget程序。...在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序(fork,exec见Linux进程基础)。...使用subprocess包中的函数创建子进程的时候,要注意: 1) 在创建子进程之后,父进程是否暂停,并等待子进程运行。 2) 函数返回什么 3) 当returncode不为0时,父进程如何处理。...shell=True允许我们运行这样一些命令。 Popen() 实际上,我们上面的三个函数都是基于Popen()的封装(wrapper)。这些封装的目的在于让我们容易使用子进程。...www.google.com"]) print("parent process") 从运行结果中看到,父进程在开启子进程之后并没有等待child的完成,而是直接运行print。

    2.8K60

    设置一个计划任务,到了时间就运行代码

    前言 其实这篇文章的内容很简单,说白了就是设置一个计划任务,当触发到设定的条件后就运行。 下面的演示是 Win10 系统下 Python3,需要 Python 环境,因为代码就是 Python 的。...名称和描述写自己能记住的,然后选择下一步 ? 触发器看个人情况,下面的演示触发器是一次的 ? 设置好时间就选择下一步 ? 操作这里也就只有启动程序了 ?...按照下图的格式来填写就好,也可以选择 pythonw.exe ,区别在于没有 python.exe 这个黑窗口。个人是喜欢加上的 python.exe ,而不是 pythonw.exe ....因为 pythonw.exe 弹出的窗口可能会被遮挡住,python.exe 的则不会在弹出时就被遮挡住。 ? 接着会看到一个完整的展示,点击完成就好 ? 到了设置好的时间就会运行代码。 ?...需要注意一下条件那里,默认好像是勾选只有在计算机使用交流电源才启动此任务,说白了就是接上了电源才能启动任务,不接电源就不启动。取消勾选,什么时候都能运行。 ?

    1.2K30

    耗时两天,优化失败

    于是,为了验证文章的内容是否与本次遇到的问题一致,在本地写了一个简单的测试用例,测试代码中仅仅包含popen()函数,编译,然后使用starce ....问题解决 既然使用popen会存在fork()函数创建的子进程拷贝父进程资源的情况,那么有没有其它实现方法,能够使得子进程不对父进程的资源进行拷贝呢? 这就是vfork()函数!...vfork()的父子进程是共享数据的,也就是说使用vfork()产生的子进程不会复制父进程的资源,而是与父进程共享同一份资源,所以在子程序中修改变量,父进程的变量也会被修改。...赶紧看了下日志,没有输出错误日志,再通过redis命令查询该订单是否已经被加载: 一切正常,看来问题已经解决(至少目前来看) 结语 在本次优化中,使用基于vfork()的vpopen()函数来提到之前的基于...最重要的一个原因是使用fork()的popen(),在创建子进程的时候会进行资源复制,即使使用写时复制技术,如果没有足够的内存来复制父进程使用的内存,fork也会失败。

    53420

    python的subprocess模块

    说明: 在Python 3.5之后的版本中,官方文档中提倡通过subprocess.run()函数替代其他函数来使用 ​ ​subproccess模块的功能; ​ 在Python 3.5之前的版本中,我们可以通过...通常情况下,退出状态码为0则表示进程成功运行了;一个负值-N表示这个子进程被信号N终止了 ​ stdout: 从子进程捕获的stdout。...subprocess.Popen(): 在一些复杂场景中,我们需要将一个进程的执行输出作为另一个进程的输入。在另一些场景中,我们需要先进入到某个输入环境,然后再执行一系列的指令等。...其它方法 Popen.pid 查看子进程ID Popen.returncode 获取子进程状态码,0表示子进程结束,None未结束 在使用Popen调用系统命令式,建议使用communicate与stdin...平台下有效,用于指定一个可执行对象,它将在子进程运行之前被调用 close_sfs:在Windows平台下,如果close_sfs被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道

    3.1K20
    领券