Bonjour à tous, je fais appel à vous car je suis actuellemen t bloqué sur un code. voici où ça coince:
class TemperatureLogger(threading.Thread):
def __init__(self, channel_list, logger):
''' Class constructor
'''
self.current_temperature_list = []
self.__end_measure = False
for x in range(CANAL_NUMBER):
self.current_temperature_list.append(-1)
# Thread init
threading.Thread.__init__(self, target = self.runModule)
# Active channel
self.active_channel = channel_list
def runModule(self):
t=TemperatureLogger(1,1)
while True:
if t.__end_measure == True:
break
else:
for channel.value in range (1,9):
module.do_get_temp (handle, reading_buffer,times_buffer, buffer_length, overflows, channel, 0, 0)
if (t.active_channel[channel.value+1]<>-1):
t.current_temperature_list.append("%.3f" % reading_buffer.value)
time.sleep(1)
def main():
...
t.runModule()
for i in range (0,5):
time.sleep (2)
print t.current_temperature_list
t.__end_measure = True
if __name__ == "__main__":
main()
Et l'erreur: if (t.active_channel[channel.value+1]<>-1):
TypeError: 'int' object has no attribute '__getitem__'
bonjour à tous
j'ai un problème similaire et je n'arrive pas à comprendre. je n'ai jamais programmé en python mais le morceau de programme que je veux utiliser et modifier fait ce que je veux. Il y avait pas mal de bug au départ car il manquait la librairie PIL (pour les images).
Voici le code en python
# This Python file uses the following encoding: utf-8
import os, sys
import Image
import ImageColor
image='logo.bmp' #Coloque aqui o nome do arquivo que deseja converter
texto='Imagem.txt' #Crie um arquivo texto em branco em um diretório a sua escolha e coloque aqui o nome do arquivo texto para guardar a matriz da imagem em hexadecimal
f=open(texto,'w') #Irá abrir o arquivo texto
imopen=Image.open(image) #Abrirá a imagem
x=y=0
h=0
while y<112: #Coloque aqui a altura da imagem. A imagem do Ldg tem 125x51 pixels nb de pixel en y
#print "y"
x=0
while x<115: # Coloque aqui o comprimento da imagem.nb de pixel en x
#print "x"
z=imopen.getpixel((x,y))
h=0 h = h+((z[0]/16))
h = h+((z[1]/16))*16
h = h+((z[2]/16))*16*16
h=hex(h)
#print h
f.write(str(h))
f.write(',')
x=x+1
y=y+1
f.write('\n')
f.close()
l'erreur est sur la ligne en rouge et je suppose aussi sur les 2 suivantes.
Voici le message d'erreur :
C:\Python27>python converterbmp.py
Traceback (most recent call last):
File "converterbmp.py", line 20, in <module>
h = h+((z[0]/16))
TypeError: 'int' object has no attribute '__getitem__'
z est un entier et on attend un tuple du genre (rouge,bleu,vert) ...
en fait supprimer ces 3 lignes ne devrait résoudre le problème sans affecter le code.
Il faut aussi remplacer la variable 'h' par 'z' dans la suite du code.
merci pour le conseil, en supprimant les 3 lignes et en remplaçant h par z le programme fonctionne mais le contenu du fichier généré n'est pas ce que j'attends.
Je devrais avoir un fichier de ce type : 0x222,0x566,0xcdd,0xfff ...
le premier quartet du mot est la valeur BLEU du pixel testé dans le fichier original (de 0 à F)
le deuxième quartet du mot est la valeur VERT du pixel testé dans le fichier original (de 0 à F)
le troisième quartet du mot est la valeur ROUGE du pixel testé dans le fichier original (de 0 à F)
Je vais encore chercher...
C'est bon ça marche, l’erreur n'est pas dans le code mais dans le fichier importé qui n'était pas au format RGB mais P
un petit test du type
>>>print im.format, im.size, im.mode
JPEG (115, 115) RGB
permet de voir si le fichier est au bon format.
Merci pour l'aide.
Ce code permet donc de faire un fichier texte pour envoyer une image sur un afficheur graphique
(Color LCD shield + Arduino).
Problème _getitem__
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.