Python'a çok yeni geldim ve kendimi ilerledikçe öğretmeye çalışıyorum (pythonun en iyisi değil, zamana ihtiyacım var). Aldığım modüller Tkinter ve csv. Herhangi bir sorunuz olursa bana bildirinAttributeError: 'set' nesnesinin 'items' özelliği yok
Kısalmak adına, kodumun tamamını burada yayınlamayacağım ancak hatanın tamamını ekleyeceğim ve hatanın uyguladığı satırı göstereceğim. Aşağıdaki her şey MainApp adında bir sınıfta.
def SubmitEdit(self):
self.key=""
self.val=""
new_rows = []
self.changes = {self.key:self.val}
with open("info.csv",'rb') as f:
reader = csv.reader(f):
for row in reader:
new_row = row
for field in row:
if field == "NAME":
print "groovy"
for (self.key,self.val) in self.changes.items():
new_row = [ x.replace(self.key,self.val) for x in new_row]
new_rows.append(new_row)
with open("info.csv","wb") as f:
writer = csv.writer(f):
writer.writerows(new_rows)
Ben programda koymadan önce çalışmış emin olmak için dışarı ayrı ayrı bu kodu yazmış ve mükemmel çalıştı, ama ben sınıfta koymak ve değişiklikleri yaptığında (düşündüm) ben yapmak için gereken çalışmadığı kod/değişken satırları. Böylece bu, yanlış bir şeyleri düzelteceğime inanmamı sağlıyor. Burada
hatadır: hattı 328 hattı ifade ederException in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py",line 1536, in__call__
return self.func(*args)
File "C:\Python27\draft.py", line 328, in SubmitEdit
for (self.key,self,val) in self.changes:
AttributeError: 'set' object has no attribute 'items'
: "self.changes.items ya da (self.key, self.val)():"
“Ben” in varlığını veya yokluğunu değiştirdim (kendimi). tüm değişkenler için ama bunu işe alamıyorum.
DÜZENLEME: Böyle bakmak için kod değişmiş: yorum göre
def SubmitEdit(self):
new_rows = []
self.changes = {"MTMA",123}
with open("info.csv",'rb') as f:
reader = csv.reader(f):
for row in reader:
new_row = row
for field in row:
if field == "NAME":
print "groovy"
for (key,val) in self.changes.items():
new_row = [ x.replace(key,val) for x in new_row]
new_rows.append(new_row)
with open("info.csv","wb") as f:
writer = csv.writer(f):
writer.writerows(new_rows)
ama hala aynı hatayı alıyorum.
Eh hata. Bu yüzden, '.items()' i, self.changes.items() 'i kullanarak deneyin ve kaldırın. Http://docs.python.org/3/library/stdtypes.html#dictionary-view-objects Ayrıca, neden yaptınız? do 'self.changes = {self.key: self.val}'? Bir sözlüğe başvurmaya çalışıyorsanız, 'self.key: self.val' ifadesinin eklenmesi gerekli değildir, çünkü self.changes = {}' yeterlidir. – awbemauler
.items() öğesini çıkardığımda, "paketinden çıkarmak için 0'dan fazla değere gerek" yazan bir ValueError döndürür. Sözlüğü boş bırakmayı deneyeceğim. – MTMA
Evet, çünkü anahtarınızda ve değerinizde hiçbir şeyiniz yok. Bu değişkenleri hiçbir şey olmadan başlattın. – awbemauler