Python 3.5文件的缺省編碼是'utf-8'。
用於Windows的文件的默認編碼往往是別的。
如果你打算開兩個文本文件,可以試試這個:
import locale
locale.getdefaultlocale()
file1 = input("Enter the name of the first file: ")
file1_open = open(file1, encoding=locale.getdefaultlocale()[1])
file1_content = file1_open.read()
應該有標準庫的一些自動檢測。
否則你就可以創造自己的:
def guess_encoding(csv_file):
"""guess the encoding of the given file"""
import io
import locale
with io.open(csv_file, "rb") as f:
data = f.read(5)
if data.startswith(b"\xEF\xBB\xBF"): # UTF-8 with a "BOM"
return "utf-8-sig"
elif data.startswith(b"\xFF\xFE") or data.startswith(b"\xFE\xFF"):
return "utf-16"
else: # in Windows, guessing utf-8 doesn't work, so we have to try
try:
with io.open(csv_file, encoding="utf-8") as f:
preview = f.read(222222)
return "utf-8"
except:
return locale.getdefaultlocale()[1]
然後
file1 = input("Enter the name of the first file: ")
file1_open = open(file1, encoding=guess_encoding(file1))
file1_content = file1_open.read()
哪裏文件來自哪裏? –
我的老師在運行程序時添加了要使用的測試儀文件。其中一個測試人員給我的錯誤的第一個文件是「Tests/4-test.txt」 – Erica
你有一個空字節嵌入在字符串中不會使用python,你需要刪除空字節/ s 。你在使用什麼操作系統? –