Google Colab-ValueError: точка монтирования должна находиться в каталоге, который существует

Если нам разрешено вставлять класс Node, я бы решил проблему, как я ее реализовал ниже. hasLoop() работает в O (n) времени и занимает только пространство counter. Кажется ли это подходящим решением? Или есть способ сделать это без вложения Node? (Очевидно, что в реальной реализации было бы больше методов, таких как RemoveNode(Node n) и т. Д.)

public class LinkedNodeList {
    Node first;
    Int count;

    LinkedNodeList(){
        first = null;
        count = 0;
    }

    LinkedNodeList(Node n){
        if (n.next != null){
            throw new error("must start with single node!");
        } else {
            first = n;
            count = 1;
        }
    }

    public void addNode(Node n){
        Node lookingAt = first;

        while(lookingAt.next != null){
            lookingAt = lookingAt.next;
        }

        lookingAt.next = n;
        count++;
    }

    public boolean hasLoop(){

        int counter = 0;
        Node lookingAt = first;

        while(lookingAt.next != null){
            counter++;
            if (count < counter){
                return false;
            } else {
               lookingAt = lookingAt.next;
            }
        }

        return true;

    }



    private class Node{
        Node next;
        ....
    }

}
3
задан clarky 21 January 2019 в 10:02
поделиться

7 ответов

Заменить drive.mount('/content/drive/') на drive.mount('/content/drive')

0
ответ дан Endy Bermúdez R 21 January 2019 в 10:02
поделиться

Если монтирование не работает, даже если использовался абсолютный путь /content/drive, убедитесь, что существуют соответствующие каталоги,

!mdkir -p /content/drive

0
ответ дан azdobylak 21 January 2019 в 10:02
поделиться

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

!fusermount -u drive

Затем попробуйте снова,

from google.colab import drive
drive.mount('/content/drive')
0
ответ дан Pradeep Sakharelia 21 January 2019 в 10:02
поделиться

просто удалите «/» после диска, и он отлично работает.

То есть от drive.mount ('/ content / drive /') до drive.mount ('/ content / drive')

0
ответ дан Prashanth Sateesh 21 January 2019 в 10:02
поделиться

Я столкнулся с этой ошибкой и сегодня утром. Я не уверен, что этот коммит что хотел исправить, но это, безусловно, вызвало ошибку. Обходной путь - скопировать код для drive.py в colab, закомментировать строки 100 и 101 следующим образом:

# drive.py

...

  try:
    if _os.path.islink(mountpoint):
      raise ValueError('Mountpoint must not be a symlink')
    if _os.path.isdir(mountpoint) and _os.listdir(mountpoint):
      raise ValueError('Mountpoint must not already contain files')
    if not _os.path.isdir(mountpoint) and _os.path.exists(mountpoint):
      raise ValueError('Mountpoint must either be a directory or not exist')
    #  if '/' in mountpoint and not _os.path.exists(_os.path.dirname(mountpoint)):
    #    raise ValueError('Mountpoint must be in a directory that exists')
  except:
    d.terminate(force=True)
    raise

...

затем заменить

from google.colab import drive
drive.mount('content/drive/')

с

mount('/content/drive/')

с помощью функции mount, которую вы скопировали из drive.py

Надеемся, что проблема будет решена достаточно быстро, поэтому мы можем обойти этот обходной путь.

0
ответ дан Jimi 21 January 2019 в 10:02
поделиться

Я получил ошибку, а также изменить на drive.mount('/content/drive')

0
ответ дан Pinkerton 21 January 2019 в 10:02
поделиться

@clarky: ошибка, которую вы получили, была правильной, пыталась сказать вам, что вы используете drive.mount () неправильно: аргумент точки монтирования для drive.mount () должен быть пустым существующим каталогом или именем несуществующий файл / каталог в каталоге, который существует, так что точка монтирования может быть создана как часть операции монтирования. Использование вами относительного пути в drive.mount('content/drive/') (то есть content/drive/) подразумевает, что монтирование должно происходить в '/content/content/drive', потому что путь интерпретатора по умолчанию - /content; обратите внимание на двойной компонент пути content, и, вероятно, у вас еще нет каталога с именем / content / content, внутри которого можно создать точку монтирования с именем drive. Исправление к коду вашего ноутбука заключается в том, чтобы вместо этого использовать drive.mount('/content/drive') - обратите внимание на ведущий /, делающий путь монтирования абсолютным, а не относительным.

0
ответ дан Ami F 21 January 2019 в 10:02
поделиться
Другие вопросы по тегам:

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