Python file.read() 读取文件开头出现垃圾字符
我正在尝试用Python把几个JavaScript文件合并在一起,然后再进行压缩,基本上是这样的:
outfile = open("output.js", "w")
for somefile in a_list_of_file_names:
js = open(somefile)
outfile.write(js.read())
js.close()
outfile.close()
但是压缩工具对每个文件开头的非法字符和语法错误表示不满,所以我做了一些诊断。
>>> r = open("output.js")
>>> somestring = r.readline()
>>> somestring
'\xef\xbb\xbfvar $j = jQuery.noConflict(),\n'
>>> print somestring
var $j = jQuery.noConflict(),
文件的第一行应该是“var $j = jQuery.noConflict(),”
顺便提一下,我是在Windows系统下工作的。
有什么想法吗?
编辑:这是我从压缩工具那里得到的结果:
U:\>java -jar c:\path\yuicompressor-2.4.2.jar c:\path\somefile.js -o c:\path\bccsminified.js --type js -v
[INFO] Using charset Cp1252
[ERROR] 1:2:illegal character
[ERROR] 1:2:syntax error
[ERROR] 1:3:illegal character
2 个回答
6
那是一个UTF-8的字节顺序标记(BOM)。你可能是用记事本编辑过这个文件。
5
EF BB BF 是一种叫做 Unicode 的字节顺序标记(BOM)。这实际上是存在于你的文件中的内容。这就是为什么 Python 会检测到它。
你可以选择忽略或删除这个 BOM,或者重新编码文件,让它不包含这个标记。