0

bashスクリプトからpythonスクリプトに移動したrsync呼び出しがあります。不思議なことに、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呼び出しのために生成されたシェルに設定されていないことです。echo結果が期待どおりであることを確認するために、Python spawn をコマンドにしてデバッグを試みることができます。

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 に答える