35

I just wondering that is it possible to load local data files(like .xlsx or .csv files that on my google drive) into Colaboratory?

northcheng
  • 363
  • 1
  • 3
  • 5

9 Answers9

36

I was a bit confused by the example for loading local files on first glance as there was no place to specify a file path. All you need to do is copy and paste the recipe to figure this out, but to be clear:

from google.colab import files
uploaded = files.upload()

will open an upload dialogue window where you can browse and select your local files for upload.

Then

for fn in uploaded.keys():
  print('User uploaded file "{name}" with length {length} bytes'.format(
      name=fn, length=len(uploaded[fn])))

will show you the keys to access what you just uploaded.

Edit for additional clarification: The dictionary uploaded will have keys of the selected filenames - so if for example you select a file my_test.txt, then you would access that file using uploaded['my_test.txt'].

elz
  • 3,581
  • 2
  • 21
  • 28
  • 1
    @elphz What happends if the file is an image? – Luis Ramon Ramirez Rodriguez Mar 08 '18 at 23:36
  • 2
    but how do you load the file with Python afterward? I can't find a single example for that. – ivan_bilan Mar 11 '18 at 15:34
  • I'm having the same issue as ivan_billan. No problem 'uploading' but then there are no actual examples of how to access the uploaded file afterwards – Zachary Nagler Mar 11 '18 at 20:09
  • The file can be accessed via `uploaded`, which is a Python dictionary. For example, if you selected a file named 'test.txt', then `uploaded['test.txt']` will give you the Python object. You can use `type` to see that you have uploaded a string. Just printing `uploaded.keys()` will show you all of the filenames. – elz Mar 12 '18 at 14:00
  • 1
    @LuisRamonRamirezRodriguez - I just tested with a png file, and it looks like it still uploads as a byte string – elz Mar 12 '18 at 14:04
16

Yes, all of these scenarios are supported.

For recipes to access local and Drive files, check out the I/O example notebook.

For access to xls files, you'll want to upload the file to Google Sheets. Then, you can use the gspread recipes in the same I/O example notebook.

A recently added way to upload local files is to use the 'Files' tab in the right hand side drawer.

enter image description here

From there, you can upload a local file using the 'upload' button.

enter image description here

(You can also download files by right clicking on them in the file tree.)

Bob Smith
  • 26,929
  • 9
  • 72
  • 69
  • For some reason, this wont get updated even if you delete the files in the panel. so, its better to use ls to know about the present situation – Vikranth Feb 26 '19 at 21:40
  • Is there any way for that Files tab to come with a certain csv? As in, is there anyway that if I share a collaboratory project with someone, once it is done loading completely, they have the same csv I have (without needing to upload manually each time) – monkey intern Apr 25 '19 at 11:08
15

First, executing this cell should create an inline "Choose Files" button

from google.colab import files
uploaded = files.upload()

After selecting your file(s), uploaded will be a dictionary of keys (the file names) and values (the encoded file objects). To decode the files for a library such as Pandas, try

import pandas as pd
import io
df = pd.read_csv(io.StringIO(uploaded['filename.csv'].decode('utf-8')))

After this your dataframe df should be ready to go

Zachary Nagler
  • 621
  • 1
  • 6
  • 14
  • I just ran the import and "files.upload()" line but it is taking forever. What does it actually do? Is it going to upload every files in my google drive? – kawingkelvin May 16 '18 at 19:37
  • @kawingkelvin If I remember correctly, It should cause a file-selection window to pop up over your notebook. From there you click the files you want. If it's not loading up, maybe something in your browser is preventing the pop-up – Zachary Nagler May 21 '18 at 22:06
  • I figured out whats wrong and how it's supposed to work, after switching from safari to chrome (FF doesnt work either). it looks like google colab is not friendly to other browsers other than chrome. – kawingkelvin May 23 '18 at 21:55
  • It doesn't work, I've got this error: `KeyError: '/path/to/my_file.csv'` – Belkacem Thiziri Mar 23 '20 at 15:51
5

To load local data files to Colab:

Method 1: Google Drive Method

  1. Upload data file from system memory to Google drive.
  2. Mount Google drive in Colab

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

  3. Then-> path = "/gdrive/My Drive/filename"

You can now access google drive files in Google Colab.

Method 2: Direct Load

from google.colab import files
def getLocalFiles():
    _files = files.upload()
    if len(_files) >0:
       for k,v in _files.items():
         open(k,'wb').write(v)
getLocalFiles()

Method 3: Using import files

from google.colab import files
uploaded = files.upload()
shaurya uppal
  • 2,335
  • 23
  • 28
  • In the Method 1, you gave the instruction how to connect Google Drive, but not about how to read a file (a .csv for example). You create a variable called "path", but then what do you do with it? How do you upload your .csv from you Google Drive into the Google Colab notebook? – Matias Eiletz Apr 20 '20 at 09:47
  • Once you are connected to drive. Pretty straight forward use pandas. pd.read_csv('/gdrive/My Drive/temp.csv') – shaurya uppal Jan 02 '21 at 17:47
4

Putting this out there as an alternative for people who prefer another way to upload more files - this basically allows you to upload your files through Google Drive.

Run the below code (found this somewhere previously but I can't find the source again - credits to whoever wrote it!):

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse

from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass

!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

Click on the first link that comes up which will prompt you to sign in to Google; after that another will appear which will ask for permission to access to your Google Drive.

Then, run this which creates a directory named 'drive', and links your Google Drive to it:

!mkdir -p drive
!google-drive-ocamlfuse drive

If you do a !ls now, there will be a directory drive, and if you do a !ls drive you can see all the contents of your Google Drive.

So for example, if I save my file called abc.txt in a folder called ColabNotebooks in my Google Drive, I can now access it via a path drive/ColabNotebooks/abc.txt

yl_low
  • 809
  • 2
  • 11
  • 20
  • 3
    For the missing source -- that looks like the bit of code at: https://medium.com/deep-learning-turkey/google-colab-free-gpu-tutorial-e113627b9f5d#c890 – Kirk Kittell May 05 '18 at 14:20
3

It's a 2 step process.

Step 1 : First invoke a file selector with in your colab notebook with the following code

from google.colab import files
uploaded = files.upload()

this will take you to a file browser window

step 2 : To load the content of the file into Pandas dataframe, use the following code

import pandas as pd
import io
df = pd.read_csv(io.StringIO(uploaded['iris.csv'].decode('utf-8')))
print(df)
Mr. T
  • 8,325
  • 9
  • 23
  • 44
Sri ram
  • 31
  • 1
  • 3
3

To get data from your system to colab try this:

from google.colab import files
uploaded = files.upload()

Choose the file you want to upload and hit enter and its done. For example, I have uploaded an image and displayed it using the code below:

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('image.jpg')
img_cvt = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

plt.imshow(img_cvt)
plt.show()
BcK
  • 2,062
  • 1
  • 8
  • 20
minakshi das
  • 81
  • 1
  • 3
1

Say, You have a folder on your Google drive named Colab and a csv is file located there. To load this file

import pandas as pd
titanic = pd.read_csv(“drive/Colab/Titanic.csv”)
titanic.head(5)

Before that, you may need to run these command:

Run these codes first in order to install the necessary libraries and perform authorization.

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

When you run the code above, you should see a result like this: enter image description here

Click the link, copy verification code and paste it to text box.

After completion of the authorization process,

mount your Google Drive:

!mkdir -p drive
!google-drive-ocamlfuse drive
Sudarshan
  • 765
  • 11
  • 25
1

You can use this URL for uploading your files in Google Colab:

https://colab.research.google.com/notebooks/io.ipynb#scrollTo=vz-jH8T_Uk2c

go to Local file system>Downloading files to your local file system Then run the code. After that, browser button will be appeared for you to uploading your files from your PC.

hamed baziyad
  • 1,364
  • 3
  • 19
  • 31