Python file.read () видит ненужные символы в начале файла - PullRequest
4 голосов
/ 12 августа 2010

Я пытаюсь использовать 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 ]

5 голосов
/ 12 августа 2010

Это спецификация UTF-8 (метка порядка байтов). Вы, вероятно, отредактировали файл с помощью Блокнота.

4 голосов
/ 12 августа 2010

EF BB BF - это метка порядка байтов Unicode (BOM). Это на самом деле в ваших файлах. Вот почему Python видит это.

Либо игнорируйте / отбрасывайте спецификацию, либо перекодируйте файлы, чтобы пропустить ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...