0

我有一个 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")

我错过了什么?

4

2 回答 2

4

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

os.system("echo $RESOURCES_TO_UPDATE")

如果环境变量存在,您应该会看到打印的内容。

于 2012-06-27T19:58:05.783 回答
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"]))
于 2012-06-27T20:17:13.153 回答