Добавить файл во время цикла в python [duplicate]

Другим случаем, когда NullReferenceExceptions может случиться, является (неправильное) использование оператора as :

class Book {
    public string Name { get; set; }
}
class Car { }

Car mycar = new Car();
Book mybook = mycar as Book;   // Incompatible conversion --> mybook = null

Console.WriteLine(mybook.Name);   // NullReferenceException

Здесь Book и Car являются несовместимыми типами; a Car не может быть преобразован / передан в Book. Когда этот сбой завершается неудачно, as возвращает null. Используя mybook после этого, вы вызываете NullReferenceException.

В общем случае вы должны использовать cast или as, как показано ниже:

Если вы ожидаете преобразования типа в всегда преуспевает (т. е. вы знаете, какой объект должен быть впереди времени), тогда вы должны использовать cast:

ComicBook cb = (ComicBook)specificBook;

Если вы не уверены в типе, но хотите попробовать , чтобы использовать его как определенный тип, затем используйте as:

ComicBook cb = specificBook as ComicBook;
if (cb != null) {
   // ...
}

387
задан Peter Mortensen 25 August 2011 в 20:52
поделиться

20 ответов

Другие плакаты, вероятно, правильны ... там могут быть пробелы, смешанные с вашими вкладками. Попробуйте выполнить поиск и amp; замените все вкладки на несколько пробелов.

Попробуйте следующее:

import sys

def Factorial(n): # return factorial
    result = 1
    for i in range (1,n):
        result = result * i
    print "factorial is ",result
    return result

print Factorial(10)
458
ответ дан isherwood 26 August 2018 в 01:40
поделиться

Строка: result = result * i должна быть отступом (это тело цикла for).

Или - у вас есть смешанное пространство и символы табуляции

7
ответ дан Abgan 26 August 2018 в 01:40
поделиться

ВАЖНО: Пространства являются предпочтительным методом - см. PEP008 Отступы и вкладки или пробелы? . (Спасибо @Siha за это.)

Для пользователей Sublime Text:

Установите Sublime Text для использования вкладок для отступов: View -> Indentation - > Convert Indentation to Tabs

Снимите флажок Indent Using Spaces, а также в том же подменю выше. Это немедленно устранит эту проблему.

181
ответ дан activatedgeek 26 August 2018 в 01:40
поделиться

для Atom Users, Packages ->whitspace -> remove trailing whitespaces это сработало для меня

2
ответ дан Aha 26 August 2018 в 01:40
поделиться

Это может быть из-за того, что функция над ней не имеет отступов одинаково. то есть

class a:
    def blah:
      print("Hello world")
    def blah1:
      print("Hello world")
0
ответ дан Ali 26 August 2018 в 01:40
поделиться

Чтобы легко проверить проблемы с вкладками / пробелами, вы действительно можете это сделать:

python -m tabnanny yourfile.py

или вы можете правильно настроить редактор правильно: -)

116
ответ дан André 26 August 2018 в 01:40
поделиться

Если вы используете Vim, нажмите escape, а затем введите

gg = G

. Это автоматически отбрасывает все и очищает все пробелы, которые вы вложили.

6
ответ дан cbartondock 26 August 2018 в 01:40
поделиться

Всякий раз, когда я сталкивался с этой ошибкой, это потому, что я каким-то образом смешал вкладки и пробелы в своем редакторе.

15
ответ дан Dana 26 August 2018 в 01:40
поделиться

Это связано с тем, что происходит смешение как вкладок, так и пробелов. Вы можете либо удалить все пробелы, либо заменить их вкладками.

Или попробуйте записать это:

#!/usr/bin/python -tt

в начале кода. Эта строка разрешает любые различия между вкладками и пробелами.

0
ответ дан Eragon 26 August 2018 в 01:40
поделиться

Если вы используете редактор IDLE Python, вы можете сделать так, как это предлагает в одном из похожих сообщений об ошибке:

1) выбрать все, например. Ctrl + A

2) Перейдите в формат -> Untabify Region

3) Двойная проверка вашего отступов по-прежнему правильная, сохраните и запустите программу.

I используя Python 2.5.4

9
ответ дан Gatica 26 August 2018 в 01:40
поделиться

Если вы используете редактор Komodo, вы можете сделать то, что он предлагает в одном из похожих сообщений об ошибке:

1) выбрать все, например. Ctrl + A

2) Перейдите в раздел Код -> Отменить регион

3) Двойная проверка вашего отступов по-прежнему правильная, сохраните и запустите программу.

I используя Python 3.4.2

0
ответ дан Imtiaz Pabel 26 August 2018 в 01:40
поделиться

Если вы используете блокнот ++, выполните «замену» расширенным поисковым режимом, чтобы найти \ t и заменить на четыре пробела.

4
ответ дан Jackie Lee 26 August 2018 в 01:40
поделиться

Просто добавление. У меня была аналогичная проблема с обоими отступами в Notepad ++.

  1. Непрозрачный отступ
  2. Уровень внешнего отступов Перейдите к ----> вкладке поиска ----> нажмите на замените ----> нажмите на радиокнопку Расширенное внизу ---> Теперь замените \ t на четыре пробела. Идите в ----> вкладка поиска ----> нажмите на замену ----> нажмите на переключатель Extended ниже ---> Теперь замените\n на ничего
1
ответ дан JumpMan 26 August 2018 в 01:40
поделиться

В Atom

перейдите к

Packages > Whitespace > Convert Spaces to Tabs

Затем снова проверьте свой отступ файла:

python -m tabnanny yourFile.py

или

>python
>>> help("yourFile.py")
4
ответ дан loretoparisi 26 August 2018 в 01:40
поделиться

Выглядит как проблема с отступом. Вам не нужно сопоставлять фигурные скобки в Python, но вы do должны соответствовать уровням отступов.

. Лучший способ предотвратить проблемы с пространством / вкладками - показать невидимые символы в вашем Текстовый редактор. Это даст вам быстрый способ предотвратить и / или устранить ошибки, связанные с отступлением.

Кроме того, вставка кода с копированием является распространенным источником для этого типа проблем.

4
ответ дан Matt Kahl 26 August 2018 в 01:40
поделиться

Вы уверены, что вы не смешиваете вкладки и пробелы в белом пространстве? (Это вызовет эту ошибку.)

Обратите внимание, что вы не используете вкладки в коде Python. См. Руководство по стилю . Вы должны настроить Notepad ++ для вставки пробелов для вкладок.

31
ответ дан Peter Mortensen 26 August 2018 в 01:40
поделиться

в моем случае проблема заключалась в конфигурации pydev на Eclipse

pydev @ Eclipse [/g0]

0
ответ дан Rui Martins 26 August 2018 в 01:40
поделиться

Если вы используете Sublime-текст для разработки python, вы можете избежать ошибки, используя пакет Anaconda.После установки Anaconda,

  1. откройте файл в sublime
  2. щелкните правой кнопкой мыши на открытых пространствах
  3. выберите anaconda
  4. нажмите на autoformat
  5. DONE или Нажмите CTRL + ALT + R.
0
ответ дан Shahzaib Hayat Khan 26 August 2018 в 01:40
поделиться

Вчера у меня была такая же проблема, это была ошибка отступов, использовался мощный редактор текста. взял мои часы, пытаясь исправить это, и в конце концов я закончил копирование кода в текстовый редактор VI, и он просто отлично работал. ps python слишком чувствителен к пробелу, не забудьте перемещать пространство и вкладку.

1
ответ дан user3731311 26 August 2018 в 01:40
поделиться

, даже я тоже столкнулся с той же проблемой, позже я обнаружил, что есть проблема с кодировкой. i предлагаю вам также изменить редактор ur. лучшие дружественные к python IDE или редакторы - это pycharm, sublime, vim для linux.

-3
ответ дан yunus 26 August 2018 в 01:40
поделиться
Другие вопросы по тегам:

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