在Jupyter Notebook中锁定Python代码并使其可执行为命令

Lock Python code in Jupyter Notebook and make it executable as command

我在4个不同的单元格中运行以下代码:

小区1:

1
2
3
4
5
6
7
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:

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

小区4:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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)

我想知道是否有任何方法可以将此代码保存为.py文件,并通过在jupyter单元格中传递命令行之类的参数使其可执行。 在Jupyter笔记本中是否允许? 如果有,请告诉我如何。

**对不起,如果我在这里无知,我尝试对此进行一些研究,但无法获得任何信息。


只需使用nbconvert --to script选项。

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

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

相关文件

Convert a notebook to an executable script. This is the simplest way
to get a Python (or other language, depending on the kernel) script
out of a notebook. If there were any magics in an Jupyter notebook,
this may only be executable from a Jupyter session.


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

我不确定我的答案是你期望的,但这是我做的方式:

假设您的文件是这样的:

1
2
3
4
+
|  my_notebook.ipynb
| + folder1
| | my_script.py

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

然后你可以这样做:

1
2
3
import folder1.my_script as ms

ms.run_script()

为了能够将脚本作为包/模块调用,您需要在正确的位置创建空__init__.py文件。 所以你的树应该像:

1
2
3
4
5
6
+
|  __init__.py
|  my_notebook.ipynb
| + folder1
| |  __init__.py
| | my_script.py