这是我的代码的一部分。我不知道为什么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
答案 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)