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"xEFxBBxBF"): # UTF-8 with a "BOM"
return "utf-8-sig"
elif data.startswith(b"xFFxFE") or data.startswith(b"xFExFF"):
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()
9条答案
按热度按时间bksxznpy1#
对于以下代码,我也收到了相同的错误:
之所以会发生这种情况,是因为我正在传递
writestr()
方法中的bytestring即数据,而没有指定应该保存它的文件名,即Report.zip
。所以我更改了我的代码,它起作用了。hrirmatl2#
如果您尝试打开文件,则应使用
os
生成的路径,如下所示:eaf3rand3#
看起来您在字符“\”和“/”方面有问题。如果您在输入中使用它们-尝试将一个更改为另一个...
8ehkhllq4#
Python3.5的默认文件编码为‘utf-8’。
Windows文件的默认编码往往是其他编码。
如果您打算打开两个文本文件,可以尝试执行以下操作:
在标准库中应该有一些自动检测。
否则,您可以创建自己的:
然后
k3fezbri5#
将文件复制到以数字开头的文件夹时出现此错误。如果在数字前写上双\号的文件夹路径,问题就解决了。
i1icjdpr6#
在Windows上指定文件名的完整路径时,应该使用双反斜杠作为分隔符,而不是单反斜杠。例如,C:\FileName.txt代替C:\FileName.txt
jum4pzuy7#
该问题是由于需要解码的字节数据造成的。
当您将一个变量插入到解释器中时,它显示它的epr属性,而print()接受str(在这个场景中是相同的),并忽略所有不可打印的字符,如:\x00,\x01,并用其他字符替换它们。
一种解决方案是“解码”file1_content(忽略字节):
cbjzeqam8#
文件路径名的第一个斜杠将引发错误。
需要原始数据,r
原始字符串
FilePath=‘C://FileName.txt’
FilePath=r‘C:/FileName.txt’
lf5gs5x29#
尝试将r(原始格式)放入。
r'D:python_projectstemplates0.html'