2017-02-21 4 views
1

매크로 시트 Excel 시트를 csvs로 복사하는 간단한 파이썬 조각이 있습니다. 일부 이상한 이유로 스 니펫이 폭발합니다. 나는이 스 니펫을 Python 2.7과 함께 사용하는데 문제가 없었습니다. 최근 Python 3.6을 다운로드했습니다. 이 문제를 어떻게 해결할 수 있습니까?파이썬 - 'str'이 아닌 바이트와 같은 객체가 필요합니다.

import csv 
import xlrd 

workbook = xlrd.open_workbook('P:/LFC Lots and Sales-NEW.xlsm') 
for sheet in workbook.sheets(): 
with open('{}.csv'.format(sheet.name), 'wb') as f: 
    writer = csv.writer(f) 
    writer.writerows(sheet.row_values(row) for row in range(sheet.nrows)) 
print ("Sheets copied") 

역 추적은 :

writer.writerows(sheet.row_values(row) for row in range(sheet.nrows)) 
TypeError: a bytes-like object is required, not 'str' 

답변

1

는 알았어요! 내가해야 할 일은 wbw으로 변경하는 것뿐이었습니다. 파이썬 3으로

import csv 
import xlrd 

workbook = xlrd.open_workbook('P:/LFC Lots and Sales-NEW.xlsm') 
for sheet in workbook.sheets(): 
with open('{}.csv'.format(sheet.name), 'w') as f: 
    writer = csv.writer(f) 
    writer.writerows(sheet.row_values(row) for row in range(sheet.nrows)) 
print ("Sheets copied") 
+1

, 당신은 또한 할 것'개행 = '''열려에서 - https://docs.python.org/3/library/csv.html ([여기]를 문서를 참조하십시오 # csv.writer) 각주 # 1을 읽으십시오. – DSM

관련 문제