`
desert3
  • 浏览: 2160812 次
  • 性别: 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 subprocess 杀掉全部派生的子进程方法

    ### Python Subprocess 杀掉全部派生的子进程方法 #### 概述 在Python编程中,使用`subprocess`模块来执行外部命令或程序是非常常见的需求。然而,在某些场景下,我们需要能够有效地终止这些子进程及其所有派生的...

    Python 从subprocess运行的子进程中实时获取输出的例子

    在Python编程中,有时我们需要创建子进程来执行外部命令或脚本,以便于任务调度、资源管理和并发操作。`subprocess`模块是Python提供的一种强大工具,它允许我们方便地创建子进程并与其进行交互。本文将深入探讨如何...

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

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

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

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

    Python如何通过subprocess调用adb命令详解

    `subprocess`模块是Python标准库的一部分,用于启动新的进程、连接到它们的输入/输出/错误管道,并获取它们的返回码。它提供了一个更高级别的接口,用于生成和管理子进程,而不仅仅是执行命令。`subprocess`模块的...

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

    `Popen`会创建一个新的子进程,并使用`stdout`和`stderr`参数来捕获命令的输出。最后,`os.system()`再次执行了`SCP_CMD`,可能是为了确保命令的执行,尽管这不是必需的,因为`Popen`已经执行了命令。 在执行示例中...

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

    `subprocess`模块是Python标准库中的一个重要组成部分,它提供了创建新进程、连接到其输入/输出/错误管道以及获取其返回码的功能。通过`subprocess`可以非常方便地在Python脚本中调用外部命令。 ##### 1.1 使用`...

    Python下的subprocess模块的入门指引

    5. `cwd`: 指定子进程的当前工作目录。 6. `env`: 可以提供一个环境变量字典,替代子进程的环境。 7. `preexec_fn`: 在子进程在Unix上执行前调用的函数。 8. `close_fds`: 如果设为`True`,除了`stdin`, `stdout`...

    windows下python opencv ffmpeg读取摄像头实现rtsp推流 拉流

    要实现在Windows上通过Python和OpenCV读取RTSP流,你需要首先确保安装了Python、OpenCV以及FFmpeg。你可以通过pip安装Python的cv2库,而FFmpeg则需要单独下载并添加到系统环境变量中,以便Python可以调用其命令行...

    Python后台静默打印PDF文件附属执行程序

    2. **编写Python代码**:使用`subprocess`模块,你可以创建一个进程来运行Gsprint。例如,以下是一个简单的示例: ```python import subprocess # 指定PDF文件路径、打印机名称和Gsprint命令 pdf_file = 'path_...

    python在windows下创建隐藏窗口子进程的方法

    本文实例讲述了python在windows下创建隐藏窗口子进程的方法。分享给大家供大家参考。具体实现方法如下: import subprocess IS_WIN32 = 'win32' in str(sys.platform).lower() def subprocess_call(*args, **kwargs...

    Python中subprocess模块用法实例详解

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

    Python入门教程超详细1小时学会Python_犀牛基础教程详细版.pdf

    Python的`subprocess`模块允许我们创建子进程,如在示例中执行`cmd.exe`命令,并获取其输出。在这个例子中,通过`Popen`创建一个子进程,设置`shell=True`以允许直接执行shell命令,`stdout`和`stderr`用于获取子...

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

    在使用Selenium与Python进行自动化测试时,可能会遇到一个烦人的问题:每次启动浏览器驱动时,系统会弹出一个黑色的CMD命令行窗口。这个窗口虽然不影响程序运行,但可能会打扰到用户,尤其是在演示或者自动化脚本...

    CMD调用并读取返回信息

    在Windows操作系统中,CMD(Command Prompt)是命令行界面,它允许用户通过文本命令执行各种系统操作。CMD调用并读取返回信息是一项常见的编程任务,尤其在自动化脚本和系统管理中非常实用。这篇文章将深入探讨如何...

    python脚本 通过cmd操作数据库

    3. **subprocess**: 另一个Python标准库,用于创建新的进程,连接到它们的输入/输出/错误管道,并获取它们的返回码。 下面是一份基础的Python脚本示例,演示了如何通过CMD运行MySQL命令: ```python import ...

    Python subprocess模块详细解读

    Python的subprocess模块是用于创建和管理子进程的一个强大工具,它允许用户在Python程序中运行其他程序并与其进行交云。它最早出现在Python 2.4版本中,用于替代旧的os.system、os.spawn*、commands.*等模块,提供了...

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

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

Global site tag (gtag.js) - Google Analytics