오류: 지원되지 않는 형식 또는 손상된 파일: BOF 레코드가 필요합니다.
나는 xlsx 파일을 열고 내용만 인쇄하려고 합니다.다음 오류가 계속 발생합니다.
import xlrd
book = xlrd.open_workbook("file.xlsx")
print "The number of worksheets is", book.nsheets
print "Worksheet name(s):", book.sheet_names()
print
sh = book.sheet_by_index(0)
print sh.name, sh.nrows, sh.ncols
print
print "Cell D30 is", sh.cell_value(rowx=29, colx=3)
print
for rx in range(5):
print sh.row(rx)
print
이 오류를 출력합니다.
raise XLRDError('Unsupported format, or corrupt file: ' + msg)
xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '\xff\xfeT\x00i\x00m\x00'
감사해요.
사용하는 경우read_excel()
.csv
가 발생합니다.
XLR 오류:지원되지 않는 형식이거나 손상된 파일: BOF 레코드가 필요합니다.
을 읽는 것.csv
사할필있는가를 사용해야 .read_csv()
, 것처럼이.
df1= pd.read_csv("filename.csv")
세 번째 이유도 있습니다.엑셀에 의해 파일이 이미 열려 있는 경우.동일한 오류가 발생합니다.
이 오류 메시지는 XLS 파일의 BOF(Beginning of File) 레코드와 관련이 있습니다.그러나 이 예제에서는 XLSX 파일을 읽으려고 시도하고 있음을 보여 줍니다.
두 가지 이유가 있을 수 있습니다.
- xlrd 버전이 오래되어 xlsx 파일 읽기를 지원하지 않습니다.
- XLSX 파일은 암호화되어 zip 형식이 아닌 OLE 복합 문서 형식으로 저장되므로 xlrd는 이전 형식의 XLS 파일로 나타납니다.
실제로 xlrd의 최신 버전을 사용하고 있는지 다시 확인합니다.하나의 셀에 데이터만 있는 새 XLSX 파일을 열면 이를 확인할 수 있습니다.
그러나 두 번째 조건이 발생하고 있으며 위에서 xlrd 버전 0.9.2를 이미 사용하고 있다고 언급했기 때문에 파일이 암호화되어 있다고 생각합니다.
워크북 암호를 명시적으로 적용할 뿐만 아니라 일부 워크시트 요소를 암호로 보호할 경우 XLSX 파일이 암호화됩니다.따라서 XLSX 파일을 여는 데 암호가 필요하지 않더라도 암호화된 XLSX 파일을 가질 수 있습니다.
업데이트: @BTew의 세 번째, 가능성이 더 높은 답변을 참조하십시오. 파일이 Excel에 의해 열려 있습니다.
xlsx 파일이 실제로 html일 때 이 오류가 발생할 수 있습니다. 텍스트 편집기를 사용하여 이 오류를 확인할 수 있습니다.이 오류가 발생했을 때 판다를 사용하여 해결했습니다.
import pandas as pd
df_list = pd.read_html('filename.xlsx')
df = pd.DataFrame(df_list[0])
오늘 이 게시물을 읽고 계신 분들께, 다음과 같은 해결책이 실제로 도움이 되었습니다.https://stackoverflow.com/a/46214958/9642876
제가 읽으려고 했던 XLSX 파일은 보고 소프트웨어에 의해 만들어졌고 팬더나 xlrd가 읽을 수 없었지만 Microsoft Excel에서 열 수 있었습니다.저는 파일을 다른 이름으로 다시 저장했고 이제 xlrd와 panda 모두 파일을 읽을 수 있습니다.
테스트하지 않았지만 동일한 이름으로 다시 저장하는 경우에도 작동할 수 있습니다.
제 경우, 누군가가 확장자 ".xls"로 끝나는 엑셀 파일을 저에게 주었습니다.xlrd로 구문 분석을 시도했는데 다음 오류가 발생했습니다.
xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found "blar blar blar"
얼마간 작업한 후 .xls 파일이 실제로 텍스트 파일이라는 것을 알게 되었습니다.보낸 사람은 실제 Excel 이진 파일을 만들지 않고 텍스트 파일에 ".xls"를 넣었습니다.
엑셀 파일인지 확인하기 위해 텍스트 편집기로 파일을 열어보는 것도 좋을 것 같습니다.이것으로 한 시간을 절약할 수 있었습니다.
저의 경우, 공유 폴더 자체에 문제가 있었습니다.
사례: WIN2012 서버에 공유 폴더가 있습니다. 여기서 사용자는 .xlsx 파일을 삭제한 다음 python 스크립트를 사용하여 해당 xlsx 파일을 데이터베이스 테이블에 로드합니다.
사용자가 이전 파일을 삭제하고 로드할 파일을 넣었음에도 불구하고 BOF 오류는 바이트 문자열과 바이트 문자열의 사용자 이름을 계속 언급했습니다. 워크시트의 xlsx 파일 내부에는 사용자 이름이 없습니다.게다가 새로 만든 폴더에 .xlsx를 복사하고 해당 새 폴더를 참조하는 스크립트를 실행하면 작동했습니다.
그래서 결국 공유 폴더를 삭제했고, 저와 사용자가 볼 수 있는 항목이 1개밖에 없는데도 5개가 삭제된 것을 깨달았습니다.제가 창문 관리 능력이 부족한 탓이라고 생각합니다만, 그것이 원인이었습니다.
저도 같은 오류 메시지를 받았습니다.다른 폴더 아래에 있는 xlsx 파일에 대해 스크립트가 작동하고 파일이 거의 동일하기 때문에 제가 보기에는 너무 이상합니다.
왜 이런 일이 일어났는지 아직도 모르겠어요.하지만 결국 엑셀 파일을 모두 다른 폴더에 복사했고 스크립트가 작동했습니다.위의 제안 중 아무 것도 사용할 수 없는 경우 시도할 수 있는 옵션...
스크립트에서 사용하는 파일이 백그라운드에서 열려 있는 경우에도 이 문제가 발생합니다.
언급URL : https://stackoverflow.com/questions/16504975/error-unsupported-format-or-corrupt-file-expected-bof-record
'programing' 카테고리의 다른 글
ALTER TABLE, null이 아닌 열에 null 설정, PostgreSQL 9.1 (0) | 2023.05.03 |
---|---|
AV Foundation, 연결에서 비동기적으로 스틸 이미지를 캡처할 때 셔터 소리를 끄는 방법은 무엇입니까? (0) | 2023.05.03 |
Eclipse 템플릿에 사용되는 ${user} 변수 값을 변경하는 방법 (0) | 2023.05.03 |
node.js에 대한 10진수 / mongoose 내 부동 소수점 (0) | 2023.05.03 |
하위 문서를 만든 후 몽구스에 채우는 방법은 무엇입니까? (0) | 2023.05.03 |