搜索项目然后用if else显示错误

时间:2017-04-23 23:34:37

标签: python

这是我的代码的一部分。我不知道为什么If和elif不工作。如果我删除它们我的代码完美。我在其他代码中有相同的功能,这个代码中唯一不同的是我有2个sys.argv。当我看到essaie它获得值3.我想确保如果缺少sys.argv 2来打印消息。有提示吗?

此代码导入一个txt,然后创建一个列表然后搜索到它然后显示写入的结果。

exemple of list:
pomme: 23
banana: 10
orange: 12
exemple of input

item.py data1.txt pomme
def recherche(texte, item, essaie):
    while True:
        if len(essaie) > 3:
            print("Un seul argument est attendu, soit le nom du fichier à traiter")
            sys.exit()
        elif len(essaie) < 3:
            print("Il faut préciser le nom du fichier à traiter")
            sys.exit()
        else:
            resultat = [s for s in ligne(texte) if item in s] #finding the word in lines
            resultat2 = str(resultat)
            resultat3 = resultat2.strip("[']")
            print(resultat3)
            sys.exit()

def main(): 
    essaie = sys.argv
    entree = sys.argv[1]
    item = sys.argv[2]
    choix = str(entree)
    texte = choix.strip("[']")
    recherche(texte, item, essaie)

if __name__ == "__main__":
    main()

如果我反对输入sys.argv 2,输出即可

IndexError: list index out of range

1 个答案:

答案 0 :(得分:3)

试试这个:

def recherche(essaie):
    while True:
        if len(essaie) > 3:
            print("Un seul argument est attendu, soit le nom du fichier à traiter")
            sys.exit()
        elif len(essaie) < 3:
            print("Il faut préciser le nom du fichier à traiter")
            sys.exit()
        else:
            entree = essaie[1]
            item = essaie[2]
            choix = str(entree)
            texte = choix.strip("[']")

            resultat = [s for s in ligne(texte) if item in s] #finding the word in lines
            resultat2 = str(resultat)
            resultat3 = resultat2.strip("[']")
            print(resultat3)
            sys.exit()

if __name__ == "__main__":
    recherche(sys.argv)