代码之家  ›  专栏  ›  技术社区  ›  Choppy

在Google的Colab笔记本中,如何从Python文件调用函数?

  •  20
  • Choppy  · 技术社区  · 7 年前

    在一个Colab笔记本中,我想调用我在一个单独的python文件中编写的python函数。我该怎么做?

    3 回复  |  直到 7 年前
        1
  •  19
  •   Bob Smith    7 年前

    编辑 :如果要导入本地模块,请编辑 sys.path 指向那个新目录。下面是一个笔记本示例: https://colab.research.google.com/notebook#fileId=1PtYW0hZit-B9y4PL978kV2ppJJPhjQua

    原始回复 : 当然,这里有一个笔记本示例: https://colab.research.google.com/notebook#fileId=1KBrq8aAiy8vYIIUiTb5UHG9GKOdEMF3n

    有两个单元格:第一个单元格定义 .py 包含要导入的函数的文件。

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

    第二个单元使用 execfile 评估一下 .py公司 文件保存在笔记本的Python解释器中。

    # Bring the file into the local Python environment.
    execfile('example.py')
    
    # Call the function defined in the file.
    f()
    
        2
  •  3
  •   PoornaDroid    6 年前

    请尝试此功能将功能从驱动器导入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!')
    

    然后执行以下两个步骤: 1-如果您有一个名为(package\u name.py)的文件,要将其上载到colab笔记本,请拨打:

    file_name = upload_dir_file(0)
    

    2-然后,导入您的包:

    import package_name
    

    注意:您可以使用相同的功能: 1-上传文件(csv、excel、pdf等):

    file\u name=upload\u dir\u文件(0)
    

    dir_name = upload_dir_file(1)
    

    享受吧!

        3
  •  0
  •   pourya    4 年前

    鲍勃·史密斯的答案无法在colab中运行。 最简单的方法是:

    exec(open(filename).read())