繁体   English   中英

在python中运行bash命令行脚本

[英]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时,可以采用两种方法:

  1. 您可以接管程序调用,而只需替换循环/字符串处理,例如:

     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 
  2. 您以“正确的方式”做到这一点,并使用一个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM