Почему Google Colab рассматривает пути к диску Google «Мой диск» и «MyDrive» как взаимозаменяемые?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему Google Colab рассматривает пути к диску Google «Мой диск» и «MyDrive» как взаимозаменяемые?

Сообщение Anonymous »

Я использую Google Colab и подключил свой Google Диск с помощью стандартной команды:

Код: Выделить всё

from google.colab import drive
drive.mount('/content/drive')
Я пробовал писать по следующим путям:

Код: Выделить всё

path_with_space = '/content/drive/My Drive/foo.txt'
path_without_space = '/content/drive/MyDrive/foo.txt'

with open(path_with_space, 'w') as f:
f.write('bar')
with open(path_without_space, 'w') as f:
f.write('baz')
Я записывал файлы в два разных пути: /content/drive/My Drive/ (с пробелом) и /content/drive/MyDrive/ (без пространство). Оба пути работали без ошибок, и os.path.exists() подтвердил существование обоих файлов.

Код: Выделить всё

if os.path.exists(path_with_space):
print(f'File {path_with_space} exists.')
else:
print(f'File {path_with_space} does not exist.')
if os.path.exists(path_without_space):
print(f'File {path_without_space} exists.')
else:
print(f'File {path_without_space} does not exist.')

# Output:
# File /content/drive/My Drive/foo.txt exists.
# File /content/drive/MyDrive/foo.txt exists.
Однако, когда я проверил свой Google Диск, на самом деле был сохранен только один файл foo.txt, и его содержимое было получено во второй операции записи.
Такое поведение сбивает с толку, поскольку предполагает, что эти два пути рассматриваются как взаимозаменяемые.
Если папки MyDrive и My Drive относятся к одной и той же папке, то это ожидаемое поведение. Но если это так, то как это работает под капотом? Если они не ссылаются на одну и ту же папку, то почему она ведет себя таким образом?

Другие пользователи сталкивались с проблемами с «Мой диск» и « MyDrive» в Colab, как отмечено в этой публикации StackOverflow 2019 года. Но со мной такого не происходит.
На тот вопрос прозвучало предложение покинуть пространство. Он соответствует примеру блокнота Google «Внешние данные: локальные файлы, диск, таблицы и облачное хранилище».

Код: Выделить всё

# Example from https://colab.research.google.com/notebooks/io.ipynb
with open('/content/drive/My Drive/foo.txt', 'w') as f:
f.write('Hello Google Drive!')
!cat /content/drive/My\ Drive/foo.txt
Я также исследовал, как работает экранирование пробелов, протестировав эти варианты с помощью команд оболочки:

Код: Выделить всё

path_with_escaped_space = '/content/drive/My\ Drive/foo.txt'
wrapped_path_with_escaped_space = "'/content/drive/My\ Drive/foo.txt'"
wrapped_path_with_space = "'/content/drive/My Drive/foo.txt'"
print("\nEscaped space: ")
!cat {path_with_escaped_space}
print("\nWrapped path with escaped space: ")
!cat {wrapped_path_with_escaped_space}
print("\nWith space: ")
!cat {path_with_space}
print("\nWrapped path with space: ")
!cat {wrapped_path_with_space}
print("\nWithout space: ")
!cat {path_without_space}
Я получил:

Код: Выделить всё

Escaped space:
Hello Google Drive!
Wrapped path with escaped space:
cat: '/content/drive/My\ Drive/foo.txt': No such file or directory

With space:
cat: /content/drive/My: No such file or directory
cat: Drive/foo.txt: No such file or directory

Wrapped path with space:
Hello Google Drive!
Without space:
Hello Google Drive!
Я также попробовал это с помощью метода open():

Код: Выделить всё

with open(path_with_escaped_space, 'w') as f:
f.write('qux')
В результате

Код: Выделить всё

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
 in ()
39 get_ipython().system('cat {path_without_space}')
40
---> 41 with open(path_with_escaped_space, 'w') as f:
42   f.write('qux')

FileNotFoundError: [Errno 2] No such file or directory: '/content/drive/My\\ Drive/foo.txt'
Я заметил, что open() интерпретирует путь иначе, чем команда оболочки. Обратная косая черта в пути была снова экранирована, что привело к недопустимому пути. Может ли это быть причиной?

Я хотел бы понять, почему это происходит и является ли это ожидаемым поведением или проблемой взаимодействия Colab с Google Диском. в частности папку "Мой диск".

Подробнее здесь: https://stackoverflow.com/questions/793 ... -interchan
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»