2017-10-19 20 views
1

J'écris un petit script dans lequel je prévois d'obtenir des informations sur le PC hôte et de l'écrire dans un classeur Excel. Je suis encore en train d'apprendre des trucs, donc ce n'est rien d'extraordinaire. Je reçois toutes les données dont j'ai besoin et peux écrire dans la plupart des choses. Je n'arrive pas à faire avancer une chose. Lorsque vous essayez le code ci-dessous:Type (s) d'opérande non supporté par Python pour +: 'float' et 'str

hardwareSheet.write("B7", usage + "%") 

Je peux imprimer la variable « usage » seulement, mais quand j'ajoute + « % » Je continue à obtenir l'erreur suivante:

TypeError: unsupported operand type(s) for +: 'float' and 'str' 

J'utilise Bibliothèque xlsxwriter pour créer et écrire Excel. hardwareSheet.write est une commande qui me permet d'écrire des données dans une feuille nommée hardware. Voilà comment je suis arrivé variable « utilisation »:

cpuInfo = wmi.Win32_Processor()[0] 
usage = float(cpuInfo.LoadPercentage) 

Si je ne parse cpuInfo.LoadPercentage à un flotteur, il serait une chaîne. J'ai googlé ceci et j'ai lu que j'ai besoin d'analyser la chaîne dans un flotteur, donc je l'ai fait. Toutes les idées qui pourraient être erronées?

+0

Vous ne pouvez pas ajouter de chaîne à un flottant. Est-ce que votre programme doit faire de l'arithmétique sur l'utilisation? Si ce n'est pas le cas, ne le dérangez pas pour le faire flotter. –

+0

Besoin d'analyser 'usage' à un flotteur dans quel but? – roganjosh

+0

@PM 2Ring - Oui, j'ai fait de l'arithmétique mais dans des fonctions séparées, je n'ai pas eu besoin de l'analyser dans une variable globale. Je l'ai maintenant. À votre santé. – davidb

Répondre

5

vous ne pouvez pas ajouter de flottants et de chaînes en python. usage est un flotteur. "%" est une chaîne.

vous devriez faire quelque chose comme:

str(usage) + '%' 
+0

Ok, je viens de vérifier et j'avais tort. "Usage" est un int. Donc j'ai besoin de le changer en chaîne, c'est ça? – davidb

+1

Ok, maintenant. C'était mon problème, après l'avoir changé en str, ça marche. Je vous remercie. – davidb

0

Ceci est une option de plus pour obtenir le même résultat.

'{0}%'.format(usage)