ColaboratoryとGoogle Drive連携のやり方総点検！ 〜 マウントからファイルのアップロードと出力まで


## Google Driveのフォルダ構成

![a](https://user-images.githubusercontent.com/87643752/130079061-642034f4-f175-435a-9b06-aa4f966081a2.png)

![c](https://user-images.githubusercontent.com/87643752/130079358-0998f822-27a5-479d-b3f0-1c97111c3f53.png)

## Colaboratoryを起動

#### エラー

```Python:
from google.colab import drive
drive.mount('/content/drive/My Drive/google_colaboratory_share_folder')


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-7-c3c60ac8b3ff> in <module>()
      1 from google.colab import drive
----> 2 drive.mount('/content/drive/My Drive/google_colaboratory_share_folder')

/usr/local/lib/python3.7/dist-packages/google/colab/drive.py in mount(mountpoint, force_remount, timeout_ms, use_metadata_server)
    105 
    106   if ' ' in mountpoint:
--> 107     raise ValueError('Mountpoint must not contain a space.')
    108 
    109   mountpoint = _os.path.expanduser(mountpoint)

ValueError: Mountpoint must not contain a space.
```

#### エラー

```Python:
from google.colab import drive
drive.mount('/content/drive/MyDrive/google_colaboratory_share_folder')

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-9-95b8b3a68d3c> in <module>()
      1 from google.colab import drive
----> 2 drive.mount('/content/drive/MyDrive/google_colaboratory_share_folder')

/usr/local/lib/python3.7/dist-packages/google/colab/drive.py in mount(mountpoint, force_remount, timeout_ms, use_metadata_server)
    168     normed = _os.path.normpath(mountpoint)
    169     if '/' in normed and not _os.path.exists(_os.path.dirname(normed)):
--> 170       raise ValueError('Mountpoint must be in a directory that exists')
    171   except:
    172     d.kill(_signal.SIGKILL)

ValueError: Mountpoint must be in a directory that exists
```

<img width="916" alt="スクリーンショット 2021-08-19 22 54 25" src="https://user-images.githubusercontent.com/87643752/130081044-1fa59b5f-3a21-4a14-b7dc-0d4e4b20f156.png">


#### OK

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

<img width="616" alt="スクリーンショット 2021-08-19 22 49 08" src="https://user-images.githubusercontent.com/87643752/130080380-457a4ff6-b14c-4fb3-9ffe-1eb2aa46d35b.png">

![スクリーンショット 2021-08-19 22 51 39](https://user-images.githubusercontent.com/87643752/130080576-2a2402c6-4edd-4a9c-ab11-ab4d4851de56.png)

![スクリーンショット 2021-08-19 22 52 35](https://user-images.githubusercontent.com/87643752/130080716-7df01311-727a-47bf-9be4-6fe496a2316d.png)

### ColaboratoryへのGoogle Driveのマウント成功


```bash:
from google.colab import drive
drive.mount('/content/drive')
Mounted at /content/drive
```

<img width="499" alt="スクリーンショット 2021-08-19 22 04 51" src="https://user-images.githubusercontent.com/87643752/130080755-230ded0f-ef4b-41ec-b1fe-288003fff866.png">

<img width="1358" alt="スクリーンショット 2021-08-19 22 55 26" src="https://user-images.githubusercontent.com/87643752/130081200-5e4a1d26-263d-41dd-8faa-42508d26ecbe.png">

### Colaboratoryからディレクトリにアクセス

- treeコマンドがない
-  ColaboratoryのOSを確認：結果は、Debian

```bash:
!tree
/bin/bash: tree: command not found
```

<img width="1138" alt="スクリーンショット 2021-08-19 22 56 13" src="https://user-images.githubusercontent.com/87643752/130081770-d3f021e9-52c4-4258-8d28-ebe778405cae.png">

- apt-get installでtreeコマンドを入れる

```bash:
!sudo apt-get install tree
```

![スクリーンショット 2021-08-19 23 00 54](https://user-images.githubusercontent.com/87643752/130082232-f6e99e90-8636-4c74-9b00-c592c8af0f4e.png)

- treeでディレクトリのツリー構成を確認

```Python:
!tree
```

```bash:
.
├── drive
│   └── MyDrive
│       └── google_colaboratory_share_folder
│           └── nozomi
│               ├── nozomi_1.jpg
│               ├── nozomi_2.jpg
│               ├── nozomi_3.jpg
│               └── nozomi_4.jpg
└── sample_data
    ├── anscombe.json
    ├── california_housing_test.csv
    ├── california_housing_train.csv
    ├── mnist_test.csv
    ├── mnist_train_small.csv
    └── README.md

5 directories, 10 files
```

![スクリーンショット 2021-08-19 23 01 52](https://user-images.githubusercontent.com/87643752/130082406-29a5d371-7a59-4db7-8323-5e4ee139bccd.png)

- 最下層のディレクトリにある画像ファイルを開く
- 各コマンドが使えない

```bash:
!pwd
/content

!xdg-open .drive/MyDrive/google_colaboratory_share_folder/nozomi/nozomi_1.jpg
xdg-open: file '.drive/MyDrive/google_colaboratory_share_folder/nozomi/nozomi_1.jpg' does not exist

!sudo apt-get install open
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package open

!ls
drive  sample_data

!ls drive
MyDrive

!ls .drive
ls: cannot access '.drive': No such file or directory

!ls drive/MyDrive
google_colaboratory_share_folder

!ls drive/MyDrive/google_colaboratory_share_folder
nozomi

!ls drive/MyDrive/google_colaboratory_share_folder/nozomi
nozomi_1.jpg  nozomi_2.jpg  nozomi_3.jpg  nozomi_4.jpg

!ls drive/MyDrive/google_colaboratory_share_folder/nozomi/nozomi_1.jpg
drive/MyDrive/google_colaboratory_share_folder/nozomi/nozomi_1.jpg

!xdg-open drive/MyDrive/google_colaboratory_share_folder/nozomi/nozomi_1.jpg 
#https://matsuoshi.hatenablog.com/entry/2019/02/13/122347

Error: no "view" mailcap rules found for type "image/jpeg"
/usr/bin/xdg-open: 851: /usr/bin/xdg-open: www-browser: not found
/usr/bin/xdg-open: 851: /usr/bin/xdg-open: links2: not found
/usr/bin/xdg-open: 851: /usr/bin/xdg-open: elinks: not found
/usr/bin/xdg-open: 851: /usr/bin/xdg-open: links: not found
/usr/bin/xdg-open: 851: /usr/bin/xdg-open: lynx: not found
/usr/bin/xdg-open: 851: /usr/bin/xdg-open: w3m: not found
xdg-open: no method available for opening 'drive/MyDrive/google_colaboratory_share_folder/nozomi/nozomi_1.jpg'

!gnome-open drive/MyDrive/google_colaboratory_share_folder/nozomi/nozomi_1.jpg 
/bin/bash: gnome-open: command not found

!mimeopen drive/MyDrive/google_colaboratory_share_folder/nozomi/nozomi_1.jpg 
/bin/bash: mimeopen: command not found

!display drive/MyDrive/google_colaboratory_share_folder/nozomi/nozomi_1.jpg 
/bin/bash: display: command not found

!sudo apt-get -y install imagemagick
#https://ch.nicovideo.jp/matarou/blomaga/ar933895
#https://pcl.solima.net/archives/716 

!display drive/MyDrive/google_colaboratory_share_folder/nozomi/nozomi_1.jpg 
display-im6.q16: unable to open X server `' @ error/display.c/DisplayImageCommand/432.
```

<img width="1341" alt="スクリーンショット 2021-08-19 23 03 34" src="https://user-images.githubusercontent.com/87643752/130082700-932a6d79-c5df-44b8-b2c0-35192d4feac7.png">

<img width="1352" alt="スクリーンショット 2021-08-19 23 03 49" src="https://user-images.githubusercontent.com/87643752/130082737-67e7da54-e37d-49a3-ac4f-cee15ac48b60.png">

![スクリーンショット 2021-08-19 23 04 06](https://user-images.githubusercontent.com/87643752/130082777-7543be03-b460-45b8-b690-491d6b0a725e.png)

<img width="1346" alt="スクリーンショット 2021-08-19 23 04 18" src="https://user-images.githubusercontent.com/87643752/130082815-39e8b8b5-20a8-4eee-ab35-b5d5d940722e.png">

- コマンドでなく、IPythonの機能で開く
- 開けた

```bash:
from IPython.display import Image,display_jpeg
display_jpeg(Image('drive/MyDrive/google_colaboratory_share_folder/nozomi/nozomi_1.jpg'))
```

<img width="1349" alt="スクリーンショット 2021-08-19 23 06 36" src="https://user-images.githubusercontent.com/87643752/130083037-a1b8d63b-4bcf-4325-8621-af308182d94d.png">

#### 今度は、Macbookのローカルのフォルダにあるファイルを、Colaboratory側に持ってくる

- ファイル選択画面

```bash:
from google.colab import files
uploaded = files.upload()
```

<img width="634" alt="スクリーンショット 2021-08-19 22 29 36" src="https://user-images.githubusercontent.com/87643752/130083281-e38629e3-5cc9-420c-809a-4534ed165d02.png">

- ローカルPCのフォルダ構成
 
<img width="522" alt="スクリーンショット 2021-08-20 0 37 22" src="https://user-images.githubusercontent.com/87643752/130098894-3cee933e-1236-4297-abef-e6b7cd2eb149.png">


- このファイルをアップロードする

<img width="509" alt="スクリーンショット 2021-08-20 0 38 23" src="https://user-images.githubusercontent.com/87643752/130098909-95e81010-1770-4f36-be73-6078f1f7b3cb.png">

<img width="534" alt="スクリーンショット 2021-08-20 0 39 05" src="https://user-images.githubusercontent.com/87643752/130098949-de8f6f91-651d-4bd4-9153-2113ccefe4b4.png">


- show1.pngのファイル名（と拡張子）でアップロードされた
 
```bash:
show1.png
show1.png(image/png) - 1501098 bytes, last modified: 2021/8/11 - 100% done
Saving show1.png to show1.png
```

<img width="644" alt="スクリーンショット 2021-08-19 22 30 38" src="https://user-images.githubusercontent.com/87643752/130083546-e48c4a12-4776-40d3-84a1-94957bc252f4.png">

- ファイルを開ける

```bash:
from IPython.display import Image,display_png
display_png(Image('show1.png'))
```

![スクリーンショット 2021-08-19 23 11 56](https://user-images.githubusercontent.com/87643752/130083876-00a8dbf5-7ec4-4f41-bc68-b5d744ac0126.png)

### Colaboratory側で生成されたファイルが、Google Drive側で閲覧できるかを確認

- touchコマンドで、空のファイルを生成
- cdは、!ではなく%に続けて打つ

<img width="1347" alt="スクリーンショット 2021-08-19 23 13 25" src="https://user-images.githubusercontent.com/87643752/130084171-a268d85d-f50d-4d8f-bc2a-7adf3001a96d.png">


#### Google Drive側でも、テキストファイルの存在を確認できる

<img width="1354" alt="スクリーンショット 2021-08-19 22 45 40" src="https://user-images.githubusercontent.com/87643752/130079810-abe777ed-c5ec-4f5d-96e4-de780db57d9a.png">

#### 画像ファイルを加工してみる

```bash:
%cd drive/MyDrive/google_colaboratory_share_folder/nozomi
!pwd
!ls
```

![](https://user-images.githubusercontent.com/87643752/130092743-2eb240a9-840c-40e2-a371-df8a1f39f512.png)

#### Google Driveにも加工された画像ファイルが格納されている

#### 画像ファイルを加工してみる

```bash:
%cd drive/MyDrive/google_colaboratory_share_folder/nozomi
!pwd
!ls
```

<img width="1357" alt="スクリーンショット 2021-08-20 0 03 01" src="https://user-images.githubusercontent.com/87643752/130092743-2eb240a9-840c-40e2-a371-df8a1f39f512.png">

```Python:
import numpy as np
import cv2
img = cv2.imread("nozomi_2.jpg")
print(img)

resize_img = cv2.resize(img,(img.shape[1] // 10, img.shape[0] // 10))
cv2.imwrite("resized_nozomi_1.jpg", resize_img)
!ls

from IPython.display import Image,display_png
display_png(Image('resized_nozomi_1.png'))

mosaic_img = cv2.resize(resize_img,(img.shape[1], img.shape[0]))
cv2.imwrite("mosaic_nozomi_1.jpg", mosaic_img)

!ls | grep mosaic
!ls

from IPython.display import Image,display_jpeg
display_jpeg(Image('mosaic_nozomi_1.jpg'))

cvt_img2 = cv2.bitwise_not(img)
cv2.imwrite("cvt_nozomi_1.jpg", cvt_img2)
from IPython.display import Image,display_jpeg
display_jpeg(Image('cvt_nozomi_1.jpg'))

!ls
```

<img width="1343" alt="スクリーンショット 2021-08-20 0 05 21" src="https://user-images.githubusercontent.com/87643752/130093807-59d20670-a02d-4cc2-b55c-b321d8779cbb.png">

<img width="1350" alt="スクリーンショット 2021-08-20 0 05 29" src="https://user-images.githubusercontent.com/87643752/130093818-7ea9799c-bfc1-4aea-b067-b21210e24091.png">

<img width="1396" alt="スクリーンショット 2021-08-20 0 05 46" src="https://user-images.githubusercontent.com/87643752/130093844-59226a83-a12a-4df3-a013-e3d88b08b308.png">


<img width="1341" alt="スクリーンショット 2021-08-20 0 06 01" src="https://user-images.githubusercontent.com/87643752/130093235-eff63e33-766b-4eec-a4bf-b00f3296c82c.png">

<img width="1391" alt="スクリーンショット 2021-08-20 0 06 16" src="https://user-images.githubusercontent.com/87643752/130093272-6799eccc-5141-4965-8a80-9319d62e4c1c.png">

![スクリーンショット 2021-08-20 0 06 26](https://user-images.githubusercontent.com/87643752/130093302-ca2f73d3-cac8-4dbf-8782-7701a4ee94cd.png)

<img width="1395" alt="スクリーンショット 2021-08-20 0 06 46" src="https://user-images.githubusercontent.com/87643752/130093326-ed4fea2b-ce80-437b-8779-a3d82d72d7ce.png">

#### Google Driveにも加工された画像ファイルが格納されている

<img width="1393" alt="スクリーンショット 2021-08-20 0 13 20" src="https://user-images.githubusercontent.com/87643752/130094414-40d2507d-aabd-4efc-a10a-7bd3ffaf7bbc.png">