[英]Run bash command line script in python
是否可以在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中? 我不想将“行”放入外壳脚本中并让python调用它。
谢谢!
从bash脚本转换为python时,可以采用两种方法:
您可以接管程序调用,而只需替换循环/字符串处理,例如:
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
您以“正确的方式”做到这一点,并使用一个python git模块 。 最初需要做更多的工作,但是从长远来看,这将带来更多好处,因为您将获得更多的即用型功能,并且像“迅速被黑在一起的shell调用”中的bug更少一样
编辑:正如评论者正确建议的那样,您应该尝试避免shell=True
。 在这种情况下,在其他情况下,当您知道 python脚本将在Linux系统上并在特定Shell下运行时, check_output(['git', 'branch', '-r'])
当然会更好。 bash),然后使用shell=True
允许您访问.bashrc
下指定的环境变量,进行globbing等。有关详细讨论,请参见此处 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.