[英]Calling rsync from Python versus bash script
我有一个rsync调用,已经从bash脚本移到了python脚本。 奇怪的是,从python调用rsync时出现问题:
这是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")
我想念什么?
我的第一个怀疑是您所引用的环境变量没有在为os.system
调用生成的外壳中设置。 您可以尝试通过使Python生成echo
命令来尝试调试,以验证结果是否符合您的期望。
os.system("echo $RESOURCES_TO_UPDATE")
如果存在环境变量,则应该看到其内容已打印。
您可以这样重写通话:
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"]))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.