相关疑难解决方法(0)

具有修改环境的Python子进程/ Popen

我认为运行带有稍微修改环境的外部命令是一种非常常见的情况.这就是我倾向于这样做的方式:

import subprocess, os
my_env = os.environ
my_env["PATH"] = "/usr/sbin:/sbin:" + my_env["PATH"]
subprocess.Popen(my_command, env=my_env)
Run Code Online (Sandbox Code Playgroud)

我有一种直觉,觉得有更好的方法; 看起来好吗?

python subprocess popen

255
推荐指数
6
解决办法
16万
查看次数

从 Python 脚本运行 Maven 的方法?

(我正在使用 Windows。)

我正在尝试从 python 脚本运行 maven。我有这个:

import subprocess

mvn="C:\\_home\\apache-maven-2.2.1\\bin\\mvn.bat --version"
p = subprocess.Popen(mvn, shell=True, stdout = subprocess.PIPE)

stdout, stderr = p.communicate()
print p.returncode # is 0 if success
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我想知道以下几点:

  • 添加参数而不是附加字符串的更好方法。
  • 也许在没有上述情况的情况下运行 maven 的某种特定方式。
  • 一种显示输出的方法(目前它仅根据失败/成功打印 1 或 0)。

我想要实现的长期目标(如果有人有更好的方法,我会注意到这一点)是制作一个简单的脚本来构建项目列表并将另一个文件列表(罐子/其他修改过的东西)移动到要部署的文件夹中对于虚拟机,手动操作是一件非常痛苦的事情。我毫不费力地在批处理脚本中工作,我只是想学习 Python 并想知道它是否更容易管理,因为我可以制作几个列表并遍历每个位置而不是一行批处理脚本中的每个任务。

(我的批处理脚本的简短版本。)

@set version=7.8.3
@set staging_folder=C:\Users\me\Desktop\staging

@set stage_was=%staging_folder%\was
@set stage_ear=%stage_was%\stuffui.ear
@set stage_war=%stage_ear%\stuff-%version%.war

:: delete stage contents
call del /s /q %staging_folder%
call rmdir /s /q %stage_was%

:: make folders
call mkdir %stage_ear%
call mkdir %stage_war%\WEB-INF\lib

:: maven builds
call mvn -f …
Run Code Online (Sandbox Code Playgroud)

python batch-file maven

6
推荐指数
1
解决办法
9797
查看次数

标签 统计

python ×2

batch-file ×1

maven ×1

popen ×1

subprocess ×1