python运行时隐藏DOS窗口

Python运行不显示DOS窗口的解决方法

很多朋友在写python程序的时候对DOS界面窗口比较排斥,无论从视觉还是应用上都是感觉怪怪的,我们在这里就给大家整理了运行python程序时候隐藏掉DOS窗口的方法,一起来看下。

方法1:pythonw xxx.py

方法2:将.py改成.pyw (这个其实就是使用脚本解析程序pythonw.exe)

跟 python.exe 比较起来,pythonw.exe 有以下的不同:

1)执行时不会弹出控制台窗口(也叫 DOS 窗口)

2)所有向原有的 stdout 和 stderr 的输出都无效

3)所有从原有的 stdin 的读取都只会得到 EOF

注:唯独视窗版 Python 有 .pyw 格式。

以上这篇Python运行不显示DOS窗口的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考。

对python中执行DOS命令的3种方法总结

1. 使用os.system("cmd")

特点是执行的时候程序会打出cmd在Linux上执行的信息。

import os

os.system("ls")

2. 使用Popen模块产生新的process

现在大部分人都喜欢使用Popen。Popen方法不会打印出cmd在linux上执行的信息。的确,Popen非常强大,支持多种参数和模式。使用前需要from subprocess import Popen, PIPE。但是Popen函数有一个缺陷,就是它是一个阻塞的方法。如果运行cmd时产生的内容非常多,函数非常容易阻塞住。解决办法是不使用wait()方法,但是也不能获得执行的返回值了。

Popen原型是:

subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)

参数bufsize:指定缓冲。

参数executable用于指定可执行程序。一般情况下我们通过args参数来设置所要运行的程序。如果将参数shell设为 True,executable将指定程序使用的shell。在windows平台下,默认的shell由COMSPEC环境变量来指定。

参数stdin, stdout, stderr分别表示程序的标准输入、输出、错误句柄。他们可以是PIPE,文件描述符或文件对象,也可以设置为None,表示从父进程继承。

参数preexec_fn只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用。

参数Close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管 道。我们不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。

如果参数shell设为true,程序将通过shell来执行。

参数cwd用于设置子进程的当前目录。

参数env是字典类型,用于指定子进程的环境变量。如果env = None,子进程的环境变量将从父进程中继承。

参数Universal_newlines:不同操作系统下,文本的换行符是不一样的。如:windows下用"/r/n"表示换,而Linux下用 "/n"。如果将此参数设置为True,Python统一把这些换行符当作"/n"来处理。

参数startupinfo与createionflags只在windows下用效,它们将被传递给底层的CreateProcess()函数,用 于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等。

subprocess.PIPE

在创建Popen对象时,subprocess.PIPE可以初始化stdin, stdout或stderr参数,表示与子进程通信的标准流。

subprocess.STDOUT

创建Popen对象时,用于初始化stderr参数,表示将错误通过标准输出流输出。

Popen的方法:

Popen.poll()

用于检查子进程是否已经结束。设置并返回returncode属性。

Popen.wait()

等待子进程结束。设置并返回returncode属性。

Popen.communicate(input=None)

与子进程进行交互。向stdin发送数据,或从stdout和stderr中读取数据。可选参数input指定发送到子进程的参数。 Communicate()返回一个元组:(stdoutdata, stderrdata)。注意:如果希望通过进程的stdin向其发送数据,在创建Popen对象的时候,参数stdin必须被设置为PIPE。同样,如 果希望从stdout和stderr获取数据,必须将stdout和stderr设置为PIPE。

Popen.send_signal(signal)

向子进程发送信号。

Popen.terminate()

停止(stop)子进程。在windows平台下,该方法将调用Windows API TerminateProcess()来结束子进程。

Popen.kill()

杀死子进程。

Popen.stdin

如果在创建Popen对象是,参数stdin被设置为PIPE,Popen.stdin将返回一个文件对象用于策子进程发送指令。否则返回None。

Popen.stdout

如果在创建Popen对象是,参数stdout被设置为PIPE,Popen.stdout将返回一个文件对象用于策子进程发送指令。否则返回 None。

Popen.stderr

如果在创建Popen对象是,参数stdout被设置为PIPE,Popen.stdout将返回一个文件对象用于策子进程发送指令。否则返回 None。

Popen.pid

获取子进程的进程ID。

Popen.returncode

获取进程的返回值。如果进程还没有结束,返回None。

例如:

p = Popen("cp -rf a/* b/", shell=True, stdout=PIPE, stderr=PIPE)

p.wait()

if p.returncode != 0:

print "Error."

return -1

3. 使用commands.getstatusoutput方法

这个方法也不会打印出cmd在linux上执行的信息。这个方法唯一的优点是,它不是一个阻塞的方法。即没有Popen函数阻塞的问题。使用前需要import commands。

例如:

status, output = commands.getstatusoutput("ls")

还有只获得output和status的方法:

commands.getoutput("ls")

commands.getstatus("ls")

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

成功安装python后、在dos命令行窗口中-python在WIN运行时去掉DOS窗口显示的方法相关推荐

  1. python总是提示缺少模块_python打包生成的exe文件运行时提示缺少模块的解决方法...

    事情是这样的我用打包命令:pyinstaller -F E:\python\clpicdownload\mypython.py打包了一个exe程序,但是运行时提示我缺 少bs4模块然后我就去查pyin ...

  2. 解决mac安装anaconda后无法在命令行调用conda,jupyter等

    首先要知道自己的conda安装在哪里了,我的Mac安装的默认位置是 /opt/anaconda3/ ,而不是linux的~/anaconda3/ ,这点很重要! 进入目录: cd /opt/anaco ...

  3. 安装oh-my-zsh后terminal/iterm命令行终端前面用户计算机名消失之如何出现

    在命令行中使用vim打开.zshrc文件: vim .zshrc 然后按i进入编辑模式,找到theme,将theme修改为agnoster,然后按esc退出编辑模式,然后按:wq退出vim模式,重启命 ...

  4. python正则匹配统计_用Python正则表达式搜索统计命令行管道中的所有数字

    由于最近经常要对庞大的Android代码进行统计,于是写了一个Python脚本,可以把命令行中输出的所有管道数据中的数字找出来,并进行累加等操作,使用起来非常快捷高效. 例如,我希望统计Android ...

  5. python查看opencv版本命令行_查看python下OpenCV版本的方法

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  6. MySQL安装成功后dos命令行设置密码

    我在windows7上安装好MySQL数据库后,添加了MySQL的安装目录D:\wamp\MySQL\bin;到环境变量中,这样就可以在任何目录下使用mysql.为了安全性考虑,需要设置MySQL数据 ...

  7. 安装完Anaconda后,在命令行输入python会出现warning

    Warning: This Python interpreter is in a conda environment, but the environment has not been activat ...

  8. linux添加磁盘后进入grub,从硬盘安装 Linux 和从 GRUB 命令行启动操作系统

    标题 +=================================================+ |  从硬盘安装 Linux 和从 GRUB 命令行启动操作系统  | +======== ...

  9. 已安装Anaconda情况下,命令行pip,python报错(详细 已解决)

    已安装Anaconda情况下,命令行pip,python报错(已解决) 这是报错截图 解决方案如下: 1.首先可以去找到anaconda文件夹,并打开该文件目录下的Script文件夹,查看是否有pip ...

  10. dos下编写java程序_在DOS命令行状态下,如果命令java Hello成功运行了程序,那么下面哪些叙述是正确的()...

    [判断题]在JDK命令行开发工具中,用编译程序javac.exe编译生成的文件是二进制可执行文件. [论述题]你认为堂吉诃德是一个怎样的人? [简答题]练习函数 [单选题]下列制度体现商法提高交易效率 ...

最新文章

  1. nodejs mysql 异步_Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步
  2. hive2.3.2安装使用
  3. AI时代我们最好做某领域的专家或高手
  4. 二叉树 | 根据前序中序遍历重建二叉树
  5. 怎样让elementui表格里面的文字不换行,溢出隐藏,tooltip显示内容
  6. 结合大学四年经验,带你揭秘高效自学Java的方法和路线(从认识、方法、反馈3个角度出发)
  7. 数据库查询语言SQL概念
  8. muduo网络库学习(三)定时器TimerQueue的设计
  9. Spark入门(十七)之单表关联
  10. 可能是最先出来的关于介绍使用Vue3的一本书
  11. 关于类型的存储时间和链接
  12. linux 压缩工具
  13. Android系统的若干关键词大汇总
  14. org.apache.ibatis.binding.BindingException
  15. JAVA分布式架构设计实例
  16. Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(2):开发环境及相关的使用技巧
  17. iOS 去除字符串中的H5标签
  18. Android 自定义锁屏 监听系统消息推送
  19. Windows下永恒之蓝(MS17-010)漏洞的复现分析
  20. word 手动双面打印设置

热门文章

  1. mongodb副本集集群中节点出现recovering状态解决办法
  2. 网宿科技边缘计算之直播应用
  3. 社交 APP 唔哩星球完成数百万元天使轮融资,投资方为启明创投
  4. rxjava背压_关于Rx Java:如何在RxJava RabbitMQ Observable中实现背压?
  5. 经纬度坐标转为上海地方坐标代码(js代码)
  6. 微信小程序地图实现标记多个位置
  7. linux 文件夹复权,大趋势6x无盘系统安装配置说明.doc
  8. 微信小程序获取微信卡包发票原件及格式化发票信息
  9. QT笔记- 如何判断窗口小部件是否自动出现(或隐藏)了滑条?
  10. Linux网络适配器不见了,linux – lspci未显示HyperV网络适配器