Je reçois cette erreur 'ValueError: Trop de valeurs pour décompresser (attendu 2)' Lorsque je fais un dictionnaire d'un fichier texte lorsqu'il y a plus d'une clé et de la valeur dans le fichier texte.
database = {} #creates an empty dictionary
with open("file.txt", "r") as infile: #opens the dictionary
for line in infile: #for each line
name, ask = line.strip().split(':')
database[name] = (ask)
name = input('Enter username: ')
ask = input('Enter pin: ')
if name in database:
if ask in database[name]:
print('Welcome', name)
else:
database.update( {name : ask} )
print(database)
else:
database.update( {name : ask} )
print(database)
with open('file.txt', 'w') as file:
file.write(json.dumps(database)) #updates the text file with the new databse
5 Réponses :
Utilisation de la fonction Pythons EVAL CODE>, vous pouvez analyser la chaîne en lecture du fichier à un dictionnaire. Ensuite, vous pouvez l'écrire à votre dictionnaire
Avec cela: j'ai essayé de saisir la clé: "Nom" pour le nom d'utilisateur et la valeur: 'Bonjour' pour PIN. Cela a abouti à la sortie: {'Hello': 'MANE', 'NAME': 'HELLO'} et modifié le contenu du fichier texte sur: {"Hello": "MANE", "NOM": "Bonjour"}
Essayez ceci, Remarque: strong> p> Selon le commentaire @jaggers, P> J'ai considéré < Code> {"Nom": "Bonjour", "Man": "MANE"} code> Ligne dans le fichier texte. P> p>
Cela renvoie l'erreur: NameError: Nom 'Nom' n'est pas défini. Ceci est pour la ligne: base de données [nom] = eval_dict ["nom"]
@Jaggers, vous avez mentionné un exemple de ligne de texte présent dans le fichier en question commentaires. J'ai utilisé la même chose pour créer un programme. Quel est le texte dans votre fichier texte?
Le contenu du fichier texte est le suivant: {"Nom": "Bonjour", "Man": "MANE"} Cependant, j'ai besoin du code pour travailler quoi que ce soit dans le fichier texte, car cela peut être sujet à modifier, car les utilisateurs peuvent Modifiez leurs détails, les utilisateurs peuvent supprimer leur compte ou que de nouveaux utilisateurs peuvent être ajoutés au dictionnaire.
@jaggers, peu importe que les données sont supprimées ou ajoutées. La propriété du dictionnaire est que les clés devraient être uniques. Les valeurs peuvent être mises à jour. Si vous devez gérer le dictionnaire des utilisateurs, ce que je peux vous suggérer, c'est créer un code> code> comme touche et maintenir le dictionnaire comme valeur de cette touche.
Cela sera complètement hors de la portée de cette question. users_dict = {'1': {'Nom': 'Hello1', 'Man': 'mane1'}, '2': {'Nom': 'Hello2', 'Man': 'MANE2'} < / code>. Vous pouvez considérer cela comme un exemple similaire que j'ai dit.
Vérifiez toutes les lignes de votre fichier
Le contenu du fichier est: {"Nom": "Bonjour", "Man": "MANE"}
Le contenu du fichier semble être une donnée JSON. Vous pouvez utiliser la fonction Charge () de JSON Module pour charger les données comme dictionnaire. Assurez-vous également que les touches sont uniques dans le fichier.
serait-il juste être chargé (fichier.txt)
La fonction Charger () nécessite un objet de fichier à lire. Vous pouvez renvoyer ce document realPyThon.com/python-json pour plus d'informations.
Votre code ouvre le fichier, puis itire sur la ligne informatique par ligne.
Si c'est exactement comme vous le dites dans votre commentaire à votre question initiale, la première ligne em> est la suivante: qui ne peut pas être analysé dans votre code. < / p> si votre fichier était au lieu de ce formulaire: p> (la nouvelle ligne est implicite) alors cela fonctionnerait bien. P> Le erreur semble être que vous pensez qu'un fichier texte qui ressemble à un dictionnaire Python sera analysé automatiquement par Python comme dictionnaire: ce n'est pas pourquoi vous avez d'autres réponses ici suggérant d'utiliser Eval () ou similaire Pour l'analyser pour vous. p> Vous voudrez peut-être envisager d'utiliser le module JSON pour lire et écrire des fichiers de dictionnaire. P> HTH P> P>
Oh je vois ce que tu veux dire. Savez-vous comment rendre le code créer le texte dans le fichier dans ce format
Le système de vérification réel fonctionnerait également avec le code écrit dans la question initiale?
Il y a toujours plusieurs façons de faire des choses comme ça. Ma suggestion serait lue le fichier dans le même format que vous l'écrivez et continuez d'utiliser le module JSON pour le faire. Vraisemblablement, c'est un exercice d'apprentissage pour vous? Dans ce cas, je vous laisserai à vous de rechercher la documentation.
Pourquoi pas simplement utiliser un fichier JSON simple?
Pouvez-vous fournir un exemple de ligne de "file.txt"?
Voici ce que le fichier texte en est à partir de maintenant qui crée une erreur: {"Nom": "Bonjour", "Man": "MANE"}