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

在Jupyter笔记本中锁定Python代码,并将其作为命令执行

  •  1
  • anky  · 技术社区  · 6 年前

    单元格1:

    import pandas as pd
    import numpy as np
    import os
    reference = pd.read_excel(argument1,sheet_name=argument2,na_values='0',converters={'SID': '{:0>12}'.format}) #reference file path
    reference.replace('',np.nan,inplace=True)
    reference.dropna(how='all',inplace = True)
    reference.drop([0],inplace=True)
    

    单元格2:

    reference=reference[reference['SType']==argument']
    

    第4单元:

    path = argument4
    file_list = os.listdir(path)
    
    for i in file_list:
        filename = os.path.join(path, i)
        #ori_df = pd.read_excel(filename)
        df = pd.read_excel(filename)
        cond = pd.Index(df.iloc[0]).intersection(reference.columns)
        df1 = reference[cond].copy()
        #df1.loc[-1] = df1.columns
        d = dict(zip(df.iloc[0], df.columns))
        df1 = df1.sort_index().rename(columns=d)
        x = df1.iloc[:,1:].columns
        df1.dropna(axis=0,how='all',subset=x,inplace=True)
        if len(cond) > 1:
            df1.to_excel(filename,index = False)
        else:
            os.remove(filename)
    

    **对不起,如果我在这里是无知的,我试图做一些研究,但无法得到任何信息。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Kamil Niski    6 年前

    用nbconvert就行了 --to script

    jupyter-nbconvert --to script path/to/your/notebook.ipynb  
    

    您将无法使用命令行传递自定义参数,这将需要对生成的脚本进行进一步的自定义。

    Relevant documentation

    将笔记本转换为可执行脚本。这是最简单的方法 获取Python(或其他语言,取决于内核)脚本 从笔记本里拿出来的。如果Jupyter笔记本里有魔法,

        2
  •  1
  •   Astariul    6 年前

    不久前我也有同样的问题^^

    我不确定我的答案是否符合你的期望,但我是这样做的:

    假设你的文件是这样的:

    +
    |  my_notebook.ipynb
    | + folder1
    | | my_script.py
    

    假设你有一个函数 run_script() 在文件中 my_script.py

    然后你可以做:

    import folder1.my_script as ms
    
    ms.run_script()
    

    __init__.py 在正确的地方归档。所以你的树应该是这样的:

    +
    |  __init__.py
    |  my_notebook.ipynb
    | + folder1
    | |  __init__.py
    | | my_script.py