理解Python脚本需要帮助

时间:2012-01-27 17:03:35

标签: android python repository

我正在分析Google的repo脚本(http://source.android.com/source/downloading.html上的说明)

repo脚本是用Python编写的。那里有一部分说:

if sys.argv[-1] =='#%s' % magic

有人可以在语义上解释这条线的含义吗?我的Python有点生疏了。整个代码块是:

magic='--calling-python-from-/bin/sh--'
"""exec" python -E "$0" "$@" """#$magic"
if __name__ == '__main__':
    import sys
    if sys.argv[-1] =='#%s' % magic:
        del sys.argv[-1]

2 个答案:

答案 0 :(得分:3)

当时的一件作品:

  • sys.argv保存传递给Python脚本的命令行参数列表。表示sys-argv[-1]是最后一个参数。
  • '#%s' % magic%格式化您的字符串,这意味着您看到%s的位置将是magic的值(如果magic不是将被转换的字符串:{ {1}})。在您的代码中,字符串将是:str(magic)
  • '#--calling-python-from-/bin/sh--'。这是自我解释的:意味着将删除列表del sys.argv[-1]的最后一个值。

所有这一切意味着:如果最后一个命令行参数是sys.argv,那么该参数将从#--calling-python-from-/bin/sh--中删除。

答案 1 :(得分:1)

它将magic格式化为格式为'#nnn'的字符串,其中n为magic转换为字符串,并将该字符串与命令行上传递的最后一个参数进行比较(负索引从列表中索引列表) )。如果找到,则从参数列表中删除arg。