是否可以在python中运行命令行bash脚本?我知道subprocess.call/check_output运行带参数的单个命令。但是,我该如何运行
for tag in `git branch -r | grep "tags/" | sed 's/ tags\///'`; do
git tag -a -m"Converting SVN tags" \
`echo $tag | grep "tags/" |sed 's/.*tags\///'` \
refs/remotes/$tag
done
在python中?我不想把“行”放在shell脚本中并让python调用它。
谢谢!
答案 0 :(得分:2)
从bash脚本转换为python时,您可以采用两种方式:
您接管程序调用,只需替换循环/字符串处理,例如像这样:
Animal& operator= (Animal const& other)
你这样做"正确的方式"并使用例如一个python git module。这最初是更多的工作,但长期有益,因为你获得了更多开箱即用的功能,并且在你的"快速入侵的shell调用中有更少的错误"
修改:正如评论者正确建议的那样,您应该尽量避免使用from subprocess import check_output
for line in check_output('git branch -r', shell=True).split("\n"):
line = line.strip()
# do your replaces here, etc. leaving that for an exercise for you
# run more `check_call` or `check_output` here
。在这种情况下,shell=True
肯定更好,在其他情况下,当你知道 python脚本将在Linux系统和特定shell(例如bash)下运行时,然后具有check_output(['git', 'branch', '-r'])
允许您访问shell=True
下指定的环境变量,执行globbing等。有关详细讨论,请参阅here。