How To Run Python Script .py File In Jupyter Notebook .ipynb File And IPython
In this article, I will tell you how to invoke a python script file (.py) from the Jupyter notebook file (.ipynb) and ipython console. But first, you should create a python virtual environment in Anaconda and start Jupyter notebook server, you can read the article How To Start Jupyter Notebook In Anaconda Python Virtual Environment to learn more.
1. Invoke Python Script File From Jupyter Notebook.
- Create a jupyter notebook file with the name InvokePythonScript.ipynb. ( There are also 2 python script files list_file.py and list_file_path.py which we will introduce later. )
- Click file InvokePythonScript.ipynb to edit it.
- Add the first line cell and input below source code. Below ipython code will create a python script file with name list_file.py. When you run this python script file in jupyter notebook, it will print out all the files and directories’ names in the folder which you pass to it as a command-line input argument. If you do not pass any folder name as the command line input arguments when you invoke list_file.py, it will list the files and directories’ names in the current directory.
%%writefile list_file.py # use ipython magic command %%writefile to create a python script file and write below script content to it. # import two python standard module. import sys import os # set dir_name value to current directory by default. dir_name = './' # if user input an argument. if len(sys.argv) > 1: # give the first argument value to a local variable, the argument value should be a directory name. dir_name = sys.argv[1] # get all the dir_name directory contained files in a list files_list = os.listdir(dir_name) # loop in the files_list. for file in files_list: # print out file name in the standard output. print(file)
%run -i list_file.py .ipynb_checkpoints InvokePythonScript.ipynb list_file.py list_file_path.py
# import system module. import sys import os # set dir_name's value to current folder by default. dir_name = './' # if invoke this scrpit with more than 1 argument. if len(sys.argv) > 1: i = 1 # loop for all the args passed when this .py file is invoked. for arg in sys.argv: print('arg',i,'=',arg) i = i + 1 # assign the first argument value to local variable dir_name. dir_name = sys.argv[1] # list all the files in the dir_name directory and return them in a list. files_list = os.listdir(dir_name) # loop in above files_list for file in files_list: # print out each file absolute path. print(os.path.abspath(file))
%run list_file_path.py ./ arg 1 = list_file_path.py arg 2 = ./ C:\WorkSpace\.ipynb_checkpoints C:\WorkSpace\InvokePythonScript.ipynb C:\WorkSpace\list_file.py C:\WorkSpace\list_file_path.py
2. Invoke Python Script File From Ipython Command-Line.
- Click the green triangle button of the python virtual environment in the Anaconda environments list, then click the Open Terminal menu item.
- Then go to the python script file saved directory use cd command, and then run command ipython -i list_file.py like below. It will print out all files and folders name in the current folder.
(env_jupyter_example) C:\Users\song zhao>cd C:\WorkSpace\JupyterExampleProject\JupyterSlideBarExample (env_jupyter_example) C:\WorkSpace\JupyterExampleProject\JupyterSlideBarExample>DIR Volume in drive C has no label. Volume Serial Number is E6EE-6486 Directory of C:\WorkSpace\JupyterExampleProject\JupyterSlideBarExample 07/25/2020 09:48 PM . 07/25/2020 09:48 PM .. 07/25/2020 09:06 PM .ipynb_checkpoints 07/25/2020 09:48 PM 2,682 InvokePythonScript.ipynb 07/25/2020 09:47 PM 665 list_file.py 07/21/2020 09:31 AM 708 list_file_path.py 3 File(s) 4,055 bytes 3 Dir(s) 69,612,453,888 bytes free (env_jupyter_example) C:\WorkSpace\JupyterExampleProject\JupyterSlideBarExample>ipython -i list_file.py Python 3.7.6 (default, Jan 8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)] Type 'copyright', 'credits' or 'license' for more information IPython 7.12.0 -- An enhanced Interactive Python. Type '?' for help. .ipynb_checkpoints InvokePythonScript.ipynb list_file.py list_file_path.py In [1]: exit() (env_jupyter_example) C:\WorkSpace\JupyterExampleProject\JupyterSlideBarExample>
Как открыть локальный файл на Jupyter?
Я сильно запутался. Я думал, что этот код в точности похож на многие учебные пособия, и я уверен, что у меня есть этот файл по правильному пути, но почему он не работает?
13 ответов
Вот возможное решение (на Python):
Допустим, у вас есть блокнот с именем файла, назовите его Notebook.ipynb. В данный момент вы работаете в этой записной книжке и хотите получить доступ к другим папкам и файлам вокруг нее. Вот его путь:
import os notebook_path = os.path.abspath("Notebook.ipynb")
Другими словами, просто используйте модуль os и получите абсолютный путь к вашей записной книжке (это тоже файл!). Оттуда используйте модуль os и ваш путь для навигации.
Например, если ваш train.csv находится в папке с именем «Наборы данных», а блокнот находится прямо рядом с этой папкой, вы можете получить такие данные:
train_csv = os.path.join(os.path.dirname(notebook_path), "Datasets/train.csv") with open(train_csv) as file: #. etc
Вывод заключается в том, что в записной книжке есть имя файла, и, пока ваш язык поддерживает манипуляции с именами путей (например, модуль os в Python), вы, вероятно, можете использовать имя записной книжки.
Наконец, причина, по которой ваш код не работает, возможно, в том, что вы либо пытаетесь получить доступ к локальным файлам (например, к папке «Загрузки») вашего Mac, когда вы работаете в онлайн-ноутбуке (например, Kaggle, где размещается ваша среда для вас, онлайн и от вашего Mac), или вы переместили или удалили что-то по этому пути. Это то, для чего предназначен модуль os в Python; он найдет путь к файлу на вашем Mac или на сервере Kaggle.
Во многих руководствах говорилось, что мы должны изменить рабочий процесс Jupyter, но я этого не понял.
Наконец, я нахожу простой способ: просто перетащите файл в эту часть.
На osX Ваш путь должен быть:
path = "/Users/name/Downloads/filename"
с name текущий пользователь вошел в систему
Вы используете это на Windows или Linux? Если вы работаете в Windows, вы должны использовать путь C:\\Users\\apple\\Downloads\train.csv , Если вы работаете в Linux, вы можете пойти по тому же пути.
Установите jupyter.Открыть терминал. Перейдите в папку, в которой находится файл (в терминале, т.е. cd path/to/folder ). Бегать jupyter notebook . И вуаля: у вас получилось примерно так:
Обратите внимание: чтобы открыть записную книжку в папке, вы можете либо щелкнуть по ней в браузере, либо перейти по адресу:
http://localhost:8888/notebooks/name_of_your_file.ipynb
Я бы предложил вам сначала проверить это: скопируйте это train.csv в тот же каталог, что и этот скрипт Jupyter в, а затем измените путь на train.csv чтобы проверить, может ли это быть успешно загружено.
Если да, это означает, что предыдущий путь ввода является проблемой
Если нет, это означает, что файл сам отказал в доступе к нему, или его реальное имя файла может быть чем-то вроде: train.csv.
Чтобы запустить Jupyter Notebook в Windows:
- откройте cmd Windows (win + R и верните cmd)
- измените каталог на желаемый путь к файлу (cd file-path)
- дать команду jupyter notebook
Вы можете дальше перемещаться из пользовательского интерфейса записной книжки Jupyter после его запуска (если вы не запускаете напрямую нужный файл).
ИЛИ вы можете напрямую перетащить файл в cmd, чтобы открыть файл.
C:\Users\kushalatreya>jupyter notebook "C:\Users\kushalatreya\Downloads\Material\PythonCourseFolder\PythonCourse-DataTypes.ipynb"
Вот возможное решение (на Python):
Допустим, у вас есть блокнот с именем файла, назовите его Notebook.ipynb. В данный момент вы работаете в этой записной книжке и хотите получить доступ к другим папкам и файлам вокруг нее. Вот его путь:
import os notebook_path = os.path.abspath("Notebook.ipynb")
Другими словами, просто используйте модуль os и получите абсолютный путь к вашей записной книжке (это тоже файл!). Оттуда используйте модуль os и ваш путь для навигации.
Например, если ваш train.csv находится в папке с именем «Наборы данных», а блокнот находится рядом с этой папкой, вы можете получить данные, подобные этим:
train_csv = os.path.join(os.path.dirname(notebook_path), "Datasets/train.csv") with open(train_csv) as file: #. etc
Вывод заключается в том, что в записной книжке есть имя файла, и, пока ваш язык поддерживает манипуляции с именами путей (например, модуль os в Python), вы, вероятно, можете использовать имя записной книжки.
Наконец, причина, по которой ваш код не работает, возможно, в том, что вы либо пытаетесь получить доступ к локальным файлам (например, к папке «Загрузки») вашего Mac, когда вы работаете в онлайн-ноутбуке (например, Kaggle, где размещается ваша среда для вас, онлайн и от вашего Mac), или вы переместили или удалили что-то по этому пути. Это то, для чего предназначен модуль os в Python; он найдет путь к файлу на вашем Mac или на сервере Kaggle.