Tôi rất mới với python và đã cố gắng dạy bản thân mình khi tôi đi (không phải là phương pháp tốt nhất sâu vào python nhưng vì lợi ích của thời gian tôi cũng cần). Các mô-đun tôi đã nhập là Tkinter và csv. Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi nào,AttributeError: đối tượng 'set' không có thuộc tính 'items'
Vì lợi ích ngắn gọn, tôi sẽ không đăng toàn bộ mã của tôi ở đây nhưng tôi sẽ bao gồm toàn bộ lỗi và cho biết dòng lỗi đang áp dụng. Mọi thứ dưới đây đều nằm trong một lớp được gọi là MainApp.
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)
tôi đã viết mã này ra riêng để chắc chắn rằng nó đã làm việc trước khi đưa nó vào chương trình và nó làm việc một cách hoàn hảo, nhưng khi tôi đặt nó trong lớp và thực hiện các thay đổi (tôi nghĩ) Tôi cần thực hiện để các dòng mã/biến nó không hoạt động. Vì vậy, điều đó khiến tôi tin rằng tôi đang sửa chữa một cái gì đó không chính xác.
Dưới đây là lỗi:
Exception 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'
đâu dòng 328 đề cập đến dòng: "hoặc (self.key, self.val) trong self.changes.items():"
Tôi đã thay đổi xung quanh (tôi cảm thấy như) sự hiện diện hay vắng mặt của "bản ngã". cho tất cả các biến nhưng tôi không thể làm cho nó hoạt động.
EDIT: tôi thay đổi mã để trông như thế này:
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)
theo ý kiến, nhưng vẫn nhận được lỗi chính xác tương tự.
Vâng lỗi tự nó được nói rằng không có thuộc tính được gọi là 'mục() '. Vì vậy, hãy thử và xóa '.items()' khỏi 'self.changes.items()' http://docs.python.org/3/library/stdtypes.html#dictionary-view-objects Ngoài ra, tại sao bạn do 'self.changes = {self.key: self.val}'? Nếu bạn chỉ đang cố gắng tham khảo một từ điển, việc thêm 'self.key: self.val' là không cần thiết vì' self.changes = {} 'là đủ. – awbemauler
Khi tôi lấy đi .items() nó trả về một ValueError có nội dung "cần nhiều hơn 0 giá trị để giải nén". Tôi sẽ cố gắng để trống từ điển. – MTMA
Có, bởi vì bạn không có gì trong khóa và giá trị của bạn. Bạn đã khởi xướng những biến đó không có gì. – awbemauler