我有一个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")
我错过了什么?
答案 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"]))