CSV.Error: 줄에 Python의 Null 바이트가 포함되어 있습니다.
- CSV 파일 형식
- Python에서 CSV 파일 만들기
-
Python의
_csv.Error: line contains NULL byte
오류 -
Python에서
_csv.Error: line contains NULL byte
오류 수정 - 결론
CSV 파일은 쉼표로 구분된 값을 포함하는 텍스트 파일입니다. 파일의 각 줄은 데이터 행을 나타내며 쉼표는 각 값을 구분합니다.
CSV 파일은 종종 스프레드시트 또는 데이터베이스의 데이터를 저장하는 데 사용됩니다. 텍스트 편집기 또는 스프레드시트 프로그램에서 열 수 있으며 프로그래밍 언어로 쉽게 구문 분석하고 처리할 수 있습니다.
CSV 파일 형식
CSV 파일은 테이블 형식으로 데이터를 저장하는 텍스트 파일입니다. 테이블의 각 행을 레코드라고 하고 레코드의 각 필드를 열이라고 합니다.
CSV 파일은 일반적으로 쉼표를 사용하여 각 필드를 구분하지만 탭이나 공백과 같은 다른 문자도 사용할 수 있습니다.
CSV 파일은 종종 데이터베이스나 스프레드시트의 데이터를 저장하는 데 사용됩니다. Microsoft 메모장과 같은 텍스트 편집기나 Microsoft Excel과 같은 스프레드시트 프로그램에서 열 수 있습니다.
Python에서 CSV 파일 만들기
CSV는 쉼표로 구분된 값을 의미하며 파일의 데이터는 쉼표로 구분되고 표 형식으로 일반 텍스트로 저장됩니다. 파일의 각 행은 레코드를 나타내고 열은 CSV 파일에 있는 데이터의 다양한 속성을 나타냅니다.
import csv
meta_data = ["First Name", "Last Name", "Course", "Age"]
student_data = ["Zeeshan", "Afridi", "Computer programming", "24"]
with open("countries.csv", "w", encoding="UTF8") as f:
writer = csv.writer(f)
# write the header
writer.writerow(meta_data)
# write the data
writer.writerow(student_data)
# closing the file
f.close()
a = open("countries.csv", "r")
print(a.read())
# closing the file
a.close()
출력:
First Name,Last Name,Course,Age
Zeeshan,Afridi,Computer programming,24
Python의 _csv.Error: line contains NULL byte
오류
CSV 파일을 읽으려고 할 때 _csv.Error: line contains NULL byte
가 표시된다고 가정하면 파일에 하나 이상의 NULL 바이트가 있기 때문일 수 있습니다. 이 문제를 해결하기 위해 CSV 판독기를 실행할 때 --zero-terminated
옵션을 사용할 수 있습니다. 이 옵션은 모든 NULL 바이트를 줄 끝 문자로 처리합니다.
null 값이 있는 경우 다음 오류가 발생합니다.
file my.csv, line 1: line contains NULL byte
Python에서 _csv.Error: line contains NULL byte
오류 수정
일반적으로 잘못된 인코딩으로 저장된 CSV 파일을 읽으려고 하기 때문에 _csv.Error: line contains NULL byte
가 발생합니다. 이 문제를 해결하려면 파일을 읽을 때 올바른 인코딩을 지정해야 합니다.
예를 들어 파일이 UTF-8로 인코딩된 경우 다음 코드를 사용합니다.
import csv
with open("filename.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
print(row)
CSV 파일을 읽으려고 할 때 _csv.Error: line contains NULL byte
가 발생했다고 가정하면 파일에 유효하지 않은 문자가 있을 수 있습니다. 이는 UTF-8 인코딩에서 유효하지 않은 문자 또는 보이지 않는 문자(예: 인쇄할 수 없는 문자)를 포함하여 여러 가지로 인해 발생할 수 있습니다.
이 오류를 수정하려면 파일에서 유효하지 않은 문자를 식별하고 제거해야 합니다. 이 작업은 텍스트 편집기나 16진수 편집기를 사용하여 수행할 수 있습니다.
유효하지 않은 문자가 제거되면 문제 없이 파일을 읽을 수 있습니다.
이러한 유형의 오류에 대한 세 가지 추가 솔루션입니다.
- 메모리 바이트 스트림에서 변환
- NULL 바이트를 빈 문자열로 대체
- 고정 라인 통과
개체 메모리 내 바이트 스트림 변환
개체 파일 인 메모리 바이트 스트림을 변환하여 이 오류를 해결할 수 있습니다. 따라서 아래는 메모리 내 바이트 스트림으로 변환하는 데 도움이 되는 코드입니다.
content = csv_file.read()
# after conversion into an in-memory byte stream
csv_stream = io.BytesIO(content)
NULL 바이트를 빈 문자열로 바꾸기
NULL byte
오류는 행을 반복하고 null 바이트를 빈 문자열로 교체하여 해결할 수 있습니다. 이를 위한 코드는 다음과 같습니다.
# After Iteration through the lines and replacing null bytes with empty string
fixed_lines = (line.replace(b"\x00", b"") for line in csv_stream)
csv_stream
대신 fixed_lines
에 개체 파일 전달
이 오류를 해결하려면 CSV 스트림 대신 고정 라인을 전달해야 합니다. 해당 목적을 위한 코드는 다음과 같습니다.
# Below remains unchanged, just passing in fixed_lines instead of csv_stream
stream = codecs.iterdecode(fixed_lines, "utf-8-sig", errors="strict")
dict_reader = csv.DictReader(stream, skipinitialspace=True, restkey="INVALID")
결론
CSV 오류 라인에 NULL 바이트 포함
은 CSV 파일의 라인에 널 바이트가 포함되어 있기 때문에 발생합니다. 유니코드를 지원하지 않는 텍스트 편집기를 사용하거나 유니코드를 지원하지 않는 다른 시스템에서 파일을 전송하는 경우 이런 일이 발생할 수 있습니다.
이 오류를 수정하려면 CSV 파일에서 null 바이트가 포함된 줄을 찾아서 제거해야 합니다. 유니코드를 지원하는 텍스트 편집기를 사용하거나 파일을 유니코드를 지원하는 시스템으로 전송하여 이 작업을 수행할 수 있습니다.
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn관련 문장 - Python Error
- AttributeError 수정: Python에서 'generator' 객체에 'next' 속성이 없습니다.
- AttributeError 해결: 'list' 객체 속성 'append'는 읽기 전용입니다.
- AttributeError 해결: Python에서 'Nonetype' 객체에 'Group' 속성이 없습니다.
- AttributeError: 'Dict' 객체에 Python의 'Append' 속성이 없습니다.
- AttributeError: 'NoneType' 객체에 Python의 'Text' 속성이 없습니다.
- AttributeError: Int 객체에 속성이 없습니다.