Заблокируйте код Python в Jupyter Notebook и сделайте его исполняемым как команда - PullRequest
0 голосов
/ 16 октября 2018

У меня есть следующий код, работающий в 4 разных ячейках:

cell1:

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)

Cell2:

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

Cell4:

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?если да, пожалуйста, дайте мне знать, как.

** Извините, если я здесь неосведомлен, я попытался провести какое-то исследование по этому вопросу, но не смог получить какую-либо информацию.

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Просто используйте параметр nbconvert --to script.

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

Вы не сможете передать пользовательский аргумент с помощью командной строки, которая потребует дополнительной настройки сгенерированного скрипта.

Соответствующая документация

Преобразование записной книжки в исполняемый скрипт.Это самый простой способ получить скрипт Python (или другой язык, в зависимости от ядра) из блокнота.Если в ноутбуке Jupyter было какое-то волшебство, его можно выполнить только из сеанса Jupyter.

0 голосов
/ 16 октября 2018

У меня был тот же вопрос не так давно ^^

Я не уверен, что мой ответ - это то, чего вы ожидаете, но вот как я это сделал:

Давайтескажем, ваши файлы выглядят так:

+
|  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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...