J'essaie d'ouvrir un fichier appelé "rows.txt" et de changer la valeur en + 1 chaque fois que le code est exécuté.
Traceback (most recent call last):
File "C:\Users\Fletcher\Desktop\Bank.py", line 158, in <module>
exel_rows = exel_rows + 1
TypeError: unsupported operand type(s) for +: '_io.TextIOWrapper' and 'int'
le code d'erreur est:
exel_rows = open("Rows.txt", "r")
exel_rows = exel_rows + 1
exel_rows = str(exel_rows)
saveFile = open('Rows.txt', 'w')
saveFile.write(exel_rows)
saveFile.close()
4 Réponses :
Je pense que vous ajoutez un nombre à une chaîne. Essayez donc le code ci-dessous, int () convertira la chaîne en entier.
Vous devez également utiliser .read () pour lire les données du fichier et les stocker dans un contenu variable.
exel_rows = open("Rows.txt", "r")
exel_rows = exel_rows.read();
exel_rows = int(exel_rows) + 1
exel_rows = str(exel_rows)
saveFile = open('Rows.txt', 'w')
saveFile.write(exel_rows)
saveFile.close()
Traceback (dernier appel le plus récent): File "C: \ Users \ Fletcher \ Desktop \ Bank.py", ligne 156, dans
@MarkIngram Voir ma réponse mise à jour. Vous devez utiliser exel_rows.read ();
@MarkIngram Heureux de vous aider. Pouvez-vous voter pour ma réponse? Quelqu'un a voté contre. je ne sais pas pourquoi
Vous devriez lire le contenu du fichier avant d'ajouter le numéro:
Remplacez:
exel_rows = open("Rows.txt", "r").read()
exel_rows = int(exel_rows) + 1
par:
exel_rows = open("Rows.txt", "r")
exel_rows = exel_rows + 1
p>
Traceback (dernier appel en dernier): Fichier "C: \ Users \ Fletcher \ Desktop \ Bank.py", ligne 155, dans
À peu près sûr que le contenu de votre Rows.txt n'est pas seulement un caractère 1 alors.
Le message d'erreur vous indique ce qui ne va pas:
exel_rows est de type _io.TextIOWrapper 1 est de type int + n'est pas pris en charge entre ces deux types. La fonction open renvoie un objet fichier. Vous devez d'abord lire vos données à partir du fichier.
file = open("Rows.txt", "r")
exel_rows = file.read() # read the data from the file
print(exel_rows) # print the contents (for debugging purposes and whatnot)
exel_rows = int(exel_rows) + 1
# continue as normal
cela crée le code d'erreur de: Traceback (dernier appel le plus récent): File "C: \ Users \ Fletcher \ Desktop \ Bank.py", ligne 158, dans
@MarkIngram Hmm ... ce message d'erreur semble incomplet. Normalement, cela lèverait ValueError: littéral invalide pour int () avec base 10: 'xxx' . Pouvez-vous essayer de déboguer le contenu de votre fichier?
le seul contenu du fichier est le caractère "1"
En supposant que le nom du fichier est temp.txt , qui contient une valeur dont le type de données est str , qui peut être convertie en un int , vous pouvez faire quelque chose comme ceci:
f = open('temp.txt', 'r') # Open the file in read Mode, to read the contents of the file.
f.seek(0) # If something like 2324 is stored then place the place the cursor to the beginning
value = f.readlines() # If the integer value spans over multiple lines (like 100 digit number, then read the whole line)
value = int(value[0]) + 1 # Update the value and store it back
f.close() # close this instance
f = open('temp.txt', 'w') # reopen it in write mode to overwrite the existing contents.
f.write(str(value)) # place the results back into the file.
f.close() # close this instance also.
Quel est le contenu du fichier?
le contenu du fichier est juste le caractère "1"
Vérifiez ma réponse. Ça marche