J'ai un programme très simple. Le code:
money = open("money.txt", "r")
moneyx = float(money)
print(moneyx)
Le fichier texte, money.txt, ne contient que ceci:
0.00
Le message d'erreur que je reçois est:
TypeError: float() argument must be a string or a number
Il s'agit très probablement d'une simple erreur. Aucun conseil? J'utilise Python 3.3.3.
money
est un file
objet , pas le contenu du fichier. Pour obtenir le contenu, vous devez read
le fichier. Si le fichier entier ne contient qu'un seul numéro, alors read()
est tout ce dont vous avez besoin.
moneyx = float(money.read())
Sinon, vous voudrez peut-être utiliser readline()
pour lire une seule ligne ou même essayer le module csv
pour les fichiers plus complexes.
N'oubliez pas non plus de close()
le fichier lorsque vous avez terminé, ou utilisez le mot clé with
pour le fermer automatiquement.
with open("money.txt") as money:
moneyx = float(money.read())
print(moneyx)
L'argent est un fichier, pas une chaîne, donc vous ne pouvez pas convertir un fichier entier en un flottant. Au lieu de cela, vous pouvez faire quelque chose comme ceci, où vous lisez le fichier entier dans une liste, où chaque ligne est un élément de la liste. Vous boucleriez et le convertiriez de cette façon.
money = open("money.txt", "r")
lines = money.readlines()
for l in lines:
moneyx = float(l)
print(moneyx)
Il est préférable d'utiliser "avec" lors de l'ouverture d'un fichier en python. De cette façon, le fichier est implicitement fermé une fois l'opération terminée
with open("money.txt", "r") as f:
content = f.readlines()
for line in content:
print float(line)