python 执行命令打印_为Python subprocess.Popen打印执行的命令

当您使用shell = True时,subprocess.Popen需要一个字符串作为其第一个参数.如果你可以帮助它最好不要使用shell = True,因为它可以是

security risk (see the Warning.

当省略shell = True或使用shell = False时,subprocess.Popen需要一个参数列表.您可以使用shlex.split从字符串生成该参数列表:

import shlex

import subprocess

def filter_history(old, new, name, repoPath):

"""Change author info

"""

# http://help.github.com/change-author-info/

# https://stackoverflow.com/a/3880493/190597

command = """git filter-branch -f --env-filter '

an="$GIT_AUTHOR_NAME"

am="$GIT_AUTHOR_EMAIL"

cn="$GIT_COMMITTER_NAME"

cm="$GIT_COMMITTER_EMAIL"

if [[ "$GIT_COMMITTER_NAME" = "{old}" ]]

then

cn="{name}"

cm="{new}"

fi

if [[ "$GIT_AUTHOR_NAME" = "{old}" ]]

then

an="{name}"

am="{new}"

fi

export GIT_AUTHOR_NAME="$an"

export GIT_AUTHOR_EMAIL="$am"

export GIT_COMMITTER_NAME="$cn"

export GIT_COMMITTER_EMAIL="$cm"

'

""".format(old = old, new = new, name = name)

process = subprocess.Popen(

shlex.split(command),

cwd = os.path.dirname(repoPath))

process.communicate()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值