" ValueError:嵌入的空字符"当使用open()时

时间:2015-11-28 23:10:21

标签: python

我正在大学里学习python而且我现在的工作很困难。我们应该采取2个文件并进行比较。我只是试图打开文件,以便我可以使用它们,但我不断收到错误cq:templatePath

componentA

这个错误是什么意思?

4 个答案:

答案 0 :(得分:4)

Python 3.5的文件的默认编码是'utf-8'。

Windows的文件的默认编码往往是别的。

如果您打算打开两个文本文件,可以试试这个:

echo nl2br($str);

标准库中应该有一些自动检测。

否则你可以创建自己的:

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]

答案 1 :(得分:1)

问题是由于字节数据需要解码。

当您将变量插入解释器时,它会显示它的 repr 属性,而 print() 使用 str(在这种情况下相同)并忽略所有不可打印的字符,例如:\x00、\x01 并将它们替换为别的。

一个解决方案是“解码”file1_content(忽略字节):

file1_content = ''.join(x for x in file1_content if x.isprintable())

答案 2 :(得分:0)

如果您要打开文件,则应使用os生成的路径,如下所示:

import os
os.path.join("path","to","the","file")

答案 3 :(得分:-1)

似乎您在使用字符“ \”和“ /”时遇到了问题。如果您在输入中使用它们-尝试将它们更改为另一种...