GOOGLE ADS

samedi 16 avril 2022

Imprimer les éléments de la liste dans les variables

donc j'ai un code comme celui-ci:

hehe = 'ip.txt'
def ip(file):
with open(file, 'r') as list:
lists = list.read().splitlines()

ips = '\n'.join(map(str, lists))
for ip in ips:
ip1 = ip.rstrip('\n')
return ip1
list = ip(hehe)
print(list)

j'ai un fichier d'ips comme:


  • 1.1.1.1

  • 2.2.2.2

  • 3.3.3.3


Je veux obtenir chaque adresse IP et la scanner dans la fonction suivante / essentiellement dans l'outil IP inversé

quand j'exécute mon code je n'obtiens que le dernier!! mon cerveau est mort aujourd'hui une aide?


Solution du problème

Si vous souhaitez que les adresses IP soient stockées dans des variables ip1, ip2, etc., c'est une mauvaise pratique, en particulier lorsque le nombre d'adresses IP est important.

Vous feriez mieux de les stocker dans un dictionnaire (un conteneur de key: valuepaires) dans lequel les clés sont 'ip1', 'ip2', etc., et les valeurs sont les adresses IP correspondantes.

Cependant, ip1, ip2et ainsi de suite n'est pas très significatif. Il s'agit essentiellement de l'index de l'adresse IP dans le fichier plus un. Ainsi, une liste est également bien adaptée à votre problème.

Ce qui suit montre comment vous pouvez utiliser un dictou list. Nous créons la fonction myprintjuste pour illustrer le passage du dictionnaire, de la liste ou d'éléments individuels du dictionnaire ou de la liste à une fonction.

Avec un dictionnaire, disons, a, a['ip1']est votre première IP, a['ip2']est votre deuxième IP, et ainsi de suite.

Avec une liste, disons, best b[0]votre première IP (ip1), b[1]est votre deuxième IP (ip2), et ainsi de suite.

Soit dit en passant, étant donné la simplicité des fonctions, vous pouvez simplement oublier de les définir et affecter l'expression dans l'instruction de retour directement à une variable (l'affectation se produisant dans une withsuite d'instructions). Cependant, j'ai inclus les fonctions pour mieux correspondre au code dans votre question.

def ip2_dict(file):
with open(file) as f:
return {f"ip{idx+1}":line.rstrip() for idx, line in enumerate(f)}
def ip2_list(file):
with open(file) as f:
return [line.rstrip() for line in f]
def myprint(s):
print(s)
a = ip2_dict('ip.txt')
b = ip2_list('ip.txt')
# print dictionary of IPs
myprint(a)
# print list of IPs
myprint(b)
# print specific IP from dict
myprint(a['ip1'])
# print specific IP from list
myprint(b[0])

Production

{'ip1': '1.1.1.1', 'ip2': '2.2.2.2', 'ip3': '3.3.3.3'}
['1.1.1.1', '2.2.2.2', '3.3.3.3']
1.1.1.1
1.1.1.1

Aucun commentaire:

Enregistrer un commentaire

Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique ?

Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...