web-dev-qa-db-fra.com

Dans le bloc-notes Colab de Google, comment appeler une fonction à partir d'un fichier Python?

À partir d'un bloc-notes Colab, je voudrais appeler une fonction python que j'ai écrite dans un fichier python séparé. Comment dois-je procéder?

15
Choppy

Edit : Si vous souhaitez importer un module local, vous voudrez éditer votre sys.path pour pointer vers ce nouveau répertoire. Voici un exemple de bloc-notes: https://colab.research.google.com/notebook#fileId=1PtYW0hZit-B9y4PL978kV2ppJJPhjQua

Réponse originale : Bien sûr, voici un exemple de cahier: https://colab.research.google.com/notebook#fileId=1KBrq8aAiy8vYIIUiTb5UHG9GKOdEMF3n

Il y a deux cellules: la première définit un .py fichier avec une fonction à importer.

%%writefile example.py
def f():
  print 'This is a function defined in a Python source file.'

La deuxième cellule utilise execfile pour évaluer que .py fichier dans l'interpréteur Python de l'interpréteur.

# Bring the file into the local Python environment.
execfile('example.py')

# Call the function defined in the file.
f()
17
Bob Smith

Veuillez essayer cette fonction pour importer une fonction de votre lecteur vers votre ordinateur portable colab:

from google.colab import files
import zipfile, io, os

def upload_dir_file(case_f):
    # author: yasser mustafa, 21 March 2018  
    # case_f = 0 for uploading one File or Package(.py) and case_f = 1 for uploading one Zipped Directory
    uploaded = files.upload()    # to upload a Full Directory, please Zip it first (use WinZip)
    for fn in uploaded.keys():
        name = fn  #.encode('utf-8')
        #print('\nfile after encode', name)
        #name = io.BytesIO(uploaded[name])
    if case_f == 0:    # case of uploading 'One File only'
        print('\n file name: ', name)
        return name
    else:   # case of uploading a directory and its subdirectories and files
        zfile = zipfile.ZipFile(name, 'r')   # unzip the directory 
        zfile.extractall()
        for d in zfile.namelist():   # d = directory
            print('\n main directory name: ', d)
            return d
print('Done!')

Suivez ensuite les deux étapes suivantes: 1- Si vous avez un fichier appelé (package_name.py), pour le télécharger sur votre appel de carnet de notes colab:

file_name = upload_dir_file(0)

2- Ensuite, importez votre colis:

import package_name

Remarque: vous pouvez utiliser la même fonction pour: 1- télécharger un fichier (csv, Excel, pdf, ....):

file_name = upload_dir_file(0)

2- Téléchargement du répertoire et de ses sous-répertoires et fichiers:

dir_name = upload_dir_file(1)

Profitez-en!

3
Yasser Mustafa