파이썬 코드
#!python3
import sys
import os.path
import codecs
if not os.path.exists(sys.argv[1]):
print("File does not exist: " + sys.argv[1])
sys.exit(1)
file_name = sys.argv[1]
with codecs.open(file_name, 'rb', errors='ignore') as file:
file_contents = file.readlines()
for line_content in file_contents:
print(type(line_content))
line_content = codecs.decode(line_content)
print(line_content)
print(type(line_content))
파일 내용 : Log.txt
b'\x03\x00\x00\x00\xc3\x8a\xc3\xacRb\x00\x00\x00\x00042284899:ATBADSFASF:DSF456582:US\r\n1'
산출:
python3 file_convert.py Log.txt ✔ 19:08:22
<class 'bytes'>
b'\x03\x00\x00\x00\xc3\x8a\xc3\xacRb\x00\x00\x00\x00042284899:ATBADSFASF:DSF456582:US\r\n1'
<class 'str'>
나는 아래의 모든 방법을 시도했다
line_content = line_content.decode('UTF-8')
line_content = line_content.decode()
line_content = codecs.decode(line_content, 'UTF-8')
이것을 처리하는 다른 방법이 있습니까?
line_content 변수는 여전히 바이트 데이터를 보유하고 있으며 유형만 str로 변경되어 다소 혼란스럽습니다.
데이터 Log.txt
는 파이썬 Bytes
객체의 문자열 표현입니다. 그것은 이상하지만 우리는 그것을 다룰 수 있습니다. 리터럴 이므로 Bytes
평가하면 실제 파이썬 Bytes
객체로 변환됩니다. 이제 인코딩이 무엇인지에 대한 질문이 여전히 있습니다.
을 사용하는 데 아무런 이점이 없습니다 codecs.open
. 그것은 파이썬 3에서 일반적으로 필요하지 않은 파이썬 2.7에서 유니코드 파일을 읽는 방법입니다. UTF-8을 추측하면 코드는 다음과 같습니다.
#!python3
import sys
import os
import ast
if not os.path.exists(sys.argv[1]):
print("File does not exist: " + sys.argv[1])
sys.exit(1)
file_name = sys.argv[1]
with open(file_name) as file:
file_contents = file.readlines()
for line_content in file_contents:
print(type(line_content))
line_content = ast.literal_eval(line_content).decode("utf-8")
print(line_content)
print(type(line_content))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다