http://www.myexception.cn/perl-python/1278887.html

http://blog.chinaunix.net/uid-25979788-id-3081912.html

python 如何启动一个外部命令程序, 并且不阻塞当前进程
在python中如何运行外部命令,并且调用后立即返回,不阻塞当前的进程。
调用 os.system函数时, python程序会被阻塞住, 直到外部命令结束。
比如我通过os.system('notepad'),运行记事本,除非我关闭记事本,不然python程序会一直阻塞,
有哪些方法能够不阻塞的运行外面命令吗?

python

------解决方案--------------------
subprocess.Popen
os.startfile

import os
os.system(r'"D:\Program Files\Foxit Software\Foxit reader.exe" abc.pdf')
偶想""是不可缺少的,因为路径中有空格,否则极容易出错;对-参数不了解,不发表意见

使用os.system会有几个问题:
1、os.system会阻塞程序继续运行(如果是图形界面,还会把图形界面搞的没反应),当然如果需要阻塞,自然不是问题。
2、os.system会打开一个命令行窗口,这是比较讨厌的;除非你确实需要显示这个命令行窗口或者本来就是命令行里运行的。

所以还是建议使用 os.popen,基本语法是一样的

import os
os.popen(r'"D:\Program Files\Foxit Software\Foxit reader.exe" abc.pdf')

这样不会出现命令行窗口,不会阻塞程序运行
如果需要阻塞程序运行,可以这样写:
os.popen(r'"D:\Program Files\Foxit Software\Foxit reader.exe" abc.pdf').read()

python 怎么启动一个外部命令程序, 并且不阻塞当前进程的更多相关文章

  1. C#中通过Process启动的外部第三方程序MainWindowHandle句柄为0

    原文 C#中通过Process启动的外部第三方程序MainWindowHandle句柄为0 前几天遇到了一个在C#的winform程序中,启动一个第三方jar程序,并修改jar运行窗体的标题的问题. ...

  2. 如何在终端使用后台运行模式启动一个Linux应用程序

    这是一个篇幅不长但是十分有用的教程,可以帮助你在终端启动一个Linux应用程序,并且使终端窗口不会丢失焦点. 我们有很多可以在Linux系统中打开一个终端窗口的方法,这取决于你的选择以及你的桌面环境. ...

  3. 如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样)

    如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样) python标准库中的subprocess可以解决这个问题. from subprocess ...

  4. 使用python写的一个代码统计程序

    # encoding="utf-8" """ 统计代码行数 """ import sys import os def c ...

  5. python 利用subprocess调用cmd命令程序,并正确输出控制台的输出中文

    平台Python3.7 1.利用控制台运行程序后在控制台会输出中文提示,但是用python调用subprocess.run函数后返回的输出是乱码,于是,解决方法是用subprocess.check_o ...

  6. 编辑一个.bat文件来启动一个.erl的程序?

    新建文本输入:"D:\DY\erl\erl5.10.2\bin\erl.exe" -noshell -s convert get_request   保存为xx.bat.. 解释: ...

  7. python 3 - 写一个注册的程序,账号和密码都存在文件里面

    choice = input('请输入你的选择:1,注册2.删除用户3.登录') #注册 输入 账号 密码 密码确认 # #需要校验用户是否存在,两次输入的密码,是否一致,为空的情况 #账号和密码都存 ...

  8. 每天一个linxu命令6之jps  查看java进程的端口

    jps -- JavaVirtual Machine Process Status Tool 可以列出本机所有Java进程的pid jps [ options ] [ hostid ] 选项 -q 仅 ...

  9. [Revit]开始:编写一个简单外部命令

    1 创建项目 以Visual Stidio作为开发工具,测试平台为Revit 2017 打开VS,创建一个C# .NET Framwork类库项目,选择..net框架版本为.NET Framwork ...

随机推荐

  1. mysql:破解MySQL密码的一种方法

    1, 修改mysql配置文件/etc/my.cnf 12 [mysqld]skip_grant_tables 2, 重启mysql后直接用root用户登录(不用输入密码) 1 $ mysql -uro ...

  2. C++简单年月日的功能实现

    // C++年月日判断初步代码 #include <iostream> using namespace std; class Data { int year; int month; int ...

  3. 如何用纯 CSS 创作阶梯文字特效

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MXYBEM 可交互视频教 ...

  4. web开发框架之Django基础

    在脚本中如何进行Django的运行 if __name__ == '__main__': import os import django # 注意路径(当前所在的位置,要加载Django的配置文件) ...

  5. CodeForces 699C - Vacations

    题目链接:http://codeforces.com/problemset/problem/699/C C. Vacations time limit per test1 second memory ...

  6. android 之 ListView相关

    ListView是一种列表视图,其将ListAdapter所提供的各个控件显示在一个垂直且可滚动的列表中.需要注意的为创建适配器并将其设置给ListView. 1.ArrayAdapter Array ...

  7. vm下-kali-linux-xfce-2018.1的简略安装

    1.选择版本为 debian 系统,因为是kali是基于debian的linux发行版 2.在安装首页选择 Graphical install,图形化安装,之后会让选择语言,选择简体中文,中国等,这些 ...

  8. PHP读取xlsx Excel 文件

    <?php require_once 'simplexlsx.class.php'; if ( $xlsx = SimpleXLSX::parse('pricelist.xlsx') ) { p ...

  9. 算法复习——欧拉回路混合图(bzoj2095二分+网络流)

    题目: Description YYD为了减肥,他来到了瘦海,这是一个巨大的海,海中有n个小岛,小岛之间有m座桥连接,两个小岛之间不会有两座桥,并且从一个小岛可以到另外任意一个小岛.现在YYD想骑单车 ...

  10. 【DFS序+单点修改区间求和】POJ 3321 Apple Tree

    poj.org/problem?id=3321 [题意] 给一棵n个节点的树,每个节点开始有一个苹果,m次操作 1.将某个结点的苹果数异或 1 2.查询一棵子树内的苹果数 #include<io ...