从Python调用rsync与bash脚本

时间:2012-06-27 19:51:53

标签: python bash rsync

我有一个rsync调用,我已经从bash脚本转移到python脚本。奇怪的是,rsync在从python调用时出现问题:

这是bash电话:

 rsync --delete --exclude .svn -avz /home/app/resources/$RESOURCES_TO_UPDATE /home/elc/app/omap3/$RESOURCES_TO_UPDATE/resources

这是Python调用:

 os.system("rsync --delete --exclude .svn -avz /home/app/resources/$RESOURCES_TO_UPDATE /home/elc/app/omap3/$RESOURCES_TO_UPDATE/resources")

我错过了什么?

2 个答案:

答案 0 :(得分:4)

我首先怀疑您引用的环境变量未在为os.system调用生成的shell中设置。您可以尝试通过使Python生成echo命令来进行调试,以验证结果是否符合预期。

os.system("echo $RESOURCES_TO_UPDATE")

如果存在环境变量,您应该看到其内容已打印出来。

答案 1 :(得分:1)

您可以像这样重写电话:

resources_to_update = os.environ["RESOURCES_TO_UPDATE"]
os.system("rsync --delete --exclude .svn -avz /home/app/resources/%s /home/elc/app/omap3/%s/resources" % (resources_to_update, resources_to_update))

或2.7 +

os.system("rsync --delete --exclude .svn -avz /home/app/resources/{0} /home/elc/app/omap3/{0}/resources".format(os.environ["RESOURCES_TO_UPDATE"]))