2017-03-06 3 views
0
class Employee: 
    def __init__(self, name, idno, leavetaken, leavereqd, reason): 
     self.name = name 
     self.idno = idno 
     self.leavetaken = leavetaken 
     self.leavereqd = leavereqd 
     self.reason = reason 

    def __str__(self): 
     return "Name: {}\nID No:{}\nLeave Taken: {}\nLeave Requested: {}\nLeave Reason: {}\n".format(self.name, self.idno, self.leavetaken, self.leavereqd, self.reason) 

n = int(raw_input("Please enter the number of employees: ")) 
employees = [] 

for i in range(n): 
    employee = Employee(
     raw_input("Employee name: "), 
     raw_input("Employee ID no: "), 
     raw_input("Employee leave taken: ") , 

    raw_input("Employee leave requested: ") , 
     raw_input("Employee leave reason: ") 
    ) 
    employees.append(employee) 

print("\n") 

for employee in employees: 
    print(employee) 

출력을 CSV 파일로 저장할 수 없습니다. 너를 도울 수 있다면 큰 도움이 될거야.클래스 파일을 CSV에 쓰는 중 오류가 발생했습니다.

CSV를 쓰려면 다음을 시도하십시오. 키 오류가 발생하여이됩니다.

keys = my_li[0].keys() 
with open('people.csv', 'wb') as output_file: 
    dict_writer = csv.DictWriter(output_file, keys) 
    dict_writer.writeheader() 
    dict_writer.writerows(my_li) 

나는 CSV

keys = employee[0].keys() 
with open('peo.csv', 'wb') as output_file: 
    dict_writer = csv.DictWriter(output_file, keys) 
    dict_writer.writeheader() 
    dict_writer.writerows(employee) 

내가지고있어 오류로를 작성하는 또 다른 방법을

AttributeError: Employee instance has no attribute 'getitem'

Listwriter 기능이되지 않은됩니다 시도 성공했다. 누구나 CSV로 쓸 수있는 솔루션을 얻을 수 있습니까?

+0

들여 쓰기를 시도하는 동안, 나는 코드를 주었고, 코드 전체에> 표지판을 만들었습니다. – anonymous

+0

마지막 줄은 dict_writer.writerows (employee [0])가 아니어야합니까? – Kewl

+0

keys = employee [0] .keys()에 오류가 발생합니다. employee 인스턴스에는 속성이 없습니다. getitem – anonymous

답변

1

이렇게하면됩니다.

columns = ['name', 'idno', 'leavetaken', 'leavereqd', 'reason'] 
with open('peo.csv', 'wb') as output_file: 
    dict_writer = csv.DictWriter(output_file, columns) 
    dict_writer.writeheader() 
    dict_writer.writerow({'name': employee.name, 'idno': employee.idno, ...}) 

목록의 모든 직원을 반복합니다.

+0

python 출력 2 명의 직원에 대한 세부 정보를 보여 주지만 n = 2로 지정하면 csv는 마지막 하나만 보여줍니다. 내가 잘못 갔습니까? – anonymous

+0

이 구현은 단일 행과 유사한 객체 (dict)를 작성하는'writerow'를 사용합니다. 따라서 파일을 열 때마다 해당 행을 씁니다. 대신에 모든 직원을 기록하는'writerows ([dictionary])'를 사용할 수 있습니다. – nir0s

+0

writerows에서 dict을 쓰려고 할 때 오류가 발생합니다. 그것을 설명 할 수 있습니까? – anonymous

관련 문제