繁体   English   中英

从Python和bash脚本调用rsync

[英]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.

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