A linha:
yml = yaml.load(open(sys.argv[1]))
... assume que você passa o valor, para ser usado na linha, como um argumento quando você chama o script:
<script> <argument>
mas provavelmente você acabou de executar o script sem nenhum argumento.
Os argumentos são listados , onde o comando para chamar o script é o primeiro item da lista (o primeiro item é índice 0).
[<script>, <sys.argv[1]>, <sys.argv[2]>]
Como você executa o script apenas com o comando ( sys.argv[0]
), sys.argv[1]
está se referindo a um item (list-) que não existe, gerando um IndexError
.