`
desert3
  • 浏览: 2139982 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

python 子进程Subprocess & windows cmd当前目录和python当前目录的区分

 
阅读更多
maven命令执行的时候,需要先到project目录,然后再执行(也可以通过设置-p参数来制定project文件)

如果使用os.chdir('newPath')来修改当前目录的话,会同时修改掉python脚本的执行目录,会出错
如果用os.system执行命令的话,cmd的当前目录就是python脚本的当前目录

可以使用Subprocess来新开一个独立子进程来处理,并设置子进程的当前目录(和主进程python脚本的当前目录隔离开来了),如下,多个命令执行用&隔开(Linux下用;来隔开),调用wait方法来同步执行,不调用的话是异步执行。cmd就是新命令行执行时的当前路径。
    cmd_all = "maven clean & maven -Dmaven.test.skip=true jar"
    p = subprocess.Popen(cmd_all, shell=True, cwd=cmdCurrentDirectory)
    #同步执行
    retcode = p.wait()


参考:
subprocess — Subprocess management
Python: Is it possible to change the Windows command line shell current directory without changing the actual current directory?
分享到:
评论
2 楼 desert3 2012-04-09  
&是linux下面多个命令一起执行时的分隔符
start E:\\前面应该还有个&的

cmdCurrentDirectory是cmd命令执行时默认的路径(如果不设置的话,默认应该是python文件所在的目录,但是在执行maven命令的时候,这个目录要设置到maven的pom文件所在的目录)

具体subprocess.Popen的参数 你可以去官网看看
1 楼 qq550441318 2012-04-09  
cmd_all = "maven clean & maven -Dmaven.test.skip=true jar start E:\\" 
p = subprocess.Popen(cmd_all, shell=True, cwd=cmdCurrentDirectory)
可以详细说明下这些参数吗?新手不懂。。。

相关推荐

    python隐藏终端执行cmd命令的方法

    在用pyinstaller打包后不想要后面的终端命令框,但是打包时加了-w或者–noconsole命令后会导致cmd程序不能运行从而出错。这个时候用subprocess可以解决该类问题。...以上这篇python隐藏终端执行cmd命令的方法就

    对Python subprocess.Popen子进程管道阻塞详解

    使用子进程处理一个大的日志文件,并对文件进行分析查询,需要等待子进程执行的输出结果,进行下一步处理。 出问题的代码 # 启用子进程执行外部shell命令 def __subprocess(self,cmd): try: # 执行外部shell命令...

    python 打印信息重定向 GUI界面 ,PyQt5实时显示调用外部程序的实时输出显示,subprocess.Popen stdout输出重定向,备注详细!

    python 打印信息重定向 GUI界面 ,PyQt5实时显示调用外部程序的实时输出显示,subprocess.Popen stdout输出重定向,备注详细!

    Python中subprocess模块用法实例详解

    本文实例讲述了Python中subprocess模块用法。分享给大家供大家参考。具体如下: 执行命令: >>> subprocess.call([ls, -l]) 0 >>> subprocess.call(exit 1, shell=True) 1 测试调用系统中cmd命令,显示命令执行的...

    python应用程序在windows下不出现cmd窗口的办法

    python写的GTK程序,会有这样一个怪现象,本来在cmd下用 python xxx.py 启动,还好好的,但是用py2exe编译以后,再用subprocess调用命令行程序的时候,就发现一个黑乎乎的cmd窗口跳出来了,特别难看,要消除它其实也...

    在python 中实现运行多条shell命令

    使用py时可能需要连续运行多条shell 命令 1. # coding: UTF-8 import sys reload(sys) sys.setdefaultencoding('utf8') import subprocess import os import commands ...subprocess.call(cmd,shell=True)

    python3 打开外部程序及关闭的示例

    subprocess.getoutput(cmd)和os.system(cmd)也能打开程序 但是不是异步的,外部程序不关闭,程序不会往下执行。 以上这篇python3 打开外部程序及关闭的示例就是小编分享给大家的全部内容了,希望能给大家一...

    python脚本内运行linux命令的方法

    本文实例讲述了python脚本内运行linux命令的方法。分享给大家供大家参考。具体实现方法如下: #/usr/bin/env python import subprocess class RunCmd(object): def cmd_run(self, cmd): self.cmd = cmd ...

    python 调用win32pai 操作cmd的方法

    subprocess.Popen('C:\windows\system32\cmd.exe') sleep(1) a=65;b=66;c=67;d=68;e=69;f=70;g=71;h=72;i=73;j=74;k=75 l=76;m=77;n=78;o=79;p=80;q=81;r=82;s=83;t=84;u=85;v=86 w=87;x=88;y=89;z=90;i=97;ii

    Python3 执行系统命令并获取实时回显功能

    最近在改造一些打包的逻辑,原来在 Windows 下是基于批处理制作的,由于批处理用起来不是很方便,一些实时的计算基本无法胜任,所以转向 Python3。但在以前脚本的基础上很多是需要调用系统命令的比如 VS 编译一个...

    python 实现判断ip连通性的方法总结

    python 以下是个人学习 python 研究判断ip连通性方法的集合。 缺点可能有办法解决,如有错误,欢迎矫正。 方法一 import os return1=os.system('ping -n 2 -w 1 172.21.1.183') print return1 缺点:会弹出...

    selenium+python 去除启动的黑色cmd窗口方法

    其实 selenium启动窗口的时候就是 使用了subprocess.Popen 启动的驱动程序的,只要在启动的时候加上启动不显示窗口的参数即可。 下面魔改开始O(∩_∩)O哈哈~ 修改代码 位于 D:\Python35\Lib\site-packages\selenium\...

    proclib:Python式进程

    Proclib 是围绕标准库 subprocess 模块的高级包装器/抽象,用 Python 编写,具有适当的管道支持,旨在直接从 Python 简化 Unix 实用程序的使用,并帮助开发人员专注于命令而不是调用命令。 概述 proclib.api.spawn...

    Nitro-gen:用python和opensurce制作的Nitro生成器,玩得开心!

    整理文件将文件放在同一文件夹中解压缩vnev.zip 安装python3 运行以下命令Windows: 打开cmd.exe,键入“ cd'path'”,然后键入“ python3 main.py” Linux: 转到文件夹右键单击并打开终端,然后键入“ python3 ...

    python中执行shell的两种方法总结

    一、使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态; 该命令目前已经废弃,被subprocess所替代; # coding...

    python执行scp命令拷贝文件及文件夹到远程主机的目录方法

    系统环境centos7 python2.7 ...import subprocess #scp file to remote node. def scpFileToRemoteNode(user,ip,password,localsource,remotedest,port=22): SCP_CMD_BASE = r expect -c set timeout 30

    python实现井字棋游戏

    windows7下python3.4.0编译运行通过。由于采用了cmd调用,所以与Linux不兼容,无法在Linux下运行。 游戏就是井字棋,小键盘上的数字位置对应棋盘位置。 #本游戏python3.4.0下编写调试,只能在windows下运行。 import...

    python 执行shell命令并将结果保存的实例

    process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) result_f = process.stdout error_f = process.stderr errors = error_f.read() if errors: pass result_str...

    Python实时获取cmd的输出

    最近发现一个问题,一个小伙儿写的console程序不够健壮,监听SOCKET的时候容易崩,造成程序的整体奔溃,无奈他没有找到问题的解决办法,一直解决不了,可是这又是一个监控程序,还是... 系统基于windows平台。 想起

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

    使用前需要from subprocess import Popen, PIPE。但是Popen函数有一个缺陷,就是它是一个阻塞的方法。如果运行cmd时产生的内容非常多,函数非常容易阻塞住。解决办法是不使用wait()方法,但是也不能获得执行的返回值...

Global site tag (gtag.js) - Google Analytics