Python file.read()在文件开头看到垃圾字符

时间:2010-08-12 15:13:22

标签: python file-io

我正在尝试使用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()

minifier在每个文件的开头抱怨非法字符和语法错误,所以我做了一些诊断。

>>> 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 个答案:

答案 0 :(得分:5)

这是一个UTF-8 BOM(字节顺序标记)。您可能已经使用记事本编辑了该文件。

答案 1 :(得分:4)

EF BB BF是Unicode字节顺序标记(BOM)。这些实际上在你的文件中。这就是Python看到它的原因。

忽略/丢弃BOM或重新编码文件以省略它。