Ошибка IOError: [Errno 0], в обработке файлов python [дубликат]

Используйте метод element.classList .contains:

element.classList.contains(class);

Это работает во всех текущих браузерах, а также есть полисы для поддержки старых браузеров.


Альтернативно, если вы работаете со старыми браузерами и не хотите использовать полисы для их исправления, использование indexOf верное, но вы должны его настроить немного:

function hasClass(element, className) {
    return (' ' + element.className + ' ').indexOf(' ' + className+ ' ') > -1;
}

В противном случае вы также получите true, если класс, который вы ищете, является частью другого имени класса.

DEMO

jQuery использует аналогичный (если не тот же) метод.


Применяется к примеру:

Поскольку это не работает вместе с коммутатором вы можете добиться такого же эффекта с помощью этого кода:

var test = document.getElementById("test"),
    classes = ['class1', 'class2', 'class3', 'class4'];

test.innerHTML = "";

for(var i = 0, j = classes.length; i < j; i++) {
    if(hasClass(test, classes[i])) {
        test.innerHTML = "I have " + classes[i];
        break;
    }
}

Он также менее избыточен;)

13
задан Simon 24 June 2012 в 13:23
поделиться

2 ответа

Python использует функцию fopen stdio и передает режим в качестве аргумента. Я предполагаю, что вы используете окна, поскольку @Lev говорит, что код отлично работает в Linux.

Ниже приведена документация окна fopen для окон, это может быть ключом к решению вашей проблемы:

Когда «r +», «w +» или «a +» тип доступа указан, как чтение, так и запись разрешены (файл считается открытым для «обновления»). Однако при переключении между чтением и записью должна быть промежуточная операция fflush, fsetpos, fseek или rewind. Текущая позиция может быть указана для операции fsetpos или fseek, если это необходимо.

Итак, решение заключается в добавлении file.seek() перед вызовом file.write(). Для добавления к концу файла используйте file.seek(0, 2).

Для вашей справки file.seek работает следующим образом:

Чтобы изменить положение файлового объекта, используйте f.seek (смещение, from_what). Позиция вычисляется добавлением смещения к точке отсчета; контрольная точка выбирается аргументом from_what. A from_what значение 0 измеряет от начала файла, 1 использует текущую позицию файла, а 2 использует конец файла в качестве контрольной точки. from_what можно опустить и по умолчанию 0, используя начало файла в качестве контрольной точки.

[ссылка: http://docs.python.org/tutorial/inputoutput .html]

Как упоминалось в комментариях @lvc и @Burkhan в его ответе, вы можете использовать новую открытую функцию из модуля io . Тем не менее, я хочу указать, что функция записи не работает точно так же в этом случае - вам нужно указать строки unicode в качестве входных данных [просто префикс u для строки в вашем случае]:

from io import open
fil = open('text.txt', 'a+')
fil.write('abc') # This fails
fil.write(u'abc') # This works

Наконец, пожалуйста, избегайте использования имени «файл» в качестве имени переменной, поскольку оно относится к встроенному типу и будет незаметно переписанным, что приведет к некоторым трудноопределяемым ошибкам.

10
ответ дан Martin B 28 August 2018 в 13:21
поделиться

Решение состоит в использовании open из io

D:\>python
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> f = open('file.txt','a+')
>>> f.tell()
0L
>>> f.close()
>>> from io import open
>>> f = open('file.txt','a+')
>>> f.tell()
22L
6
ответ дан Burhan Khalid 28 August 2018 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: