Код: Выделить всё
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')
Код: Выделить всё
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.
Такое поведение сбивает с толку, поскольку предполагает, что эти два пути рассматриваются как взаимозаменяемые.
Если папки 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!
Код: Выделить всё
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'
Я хотел бы понять, почему это происходит и является ли это ожидаемым поведением или проблемой взаимодействия Colab с Google Диском. в частности папку "Мой диск".
Подробнее здесь: https://stackoverflow.com/questions/793 ... -interchan
Мобильная версия