Перейти к содержимому

Как запустить другой файл python в коде

  • автор:

Урок 6. Как запускать Python программы

В прошлом уроке мы запустили свою первую программу на Python, она вывела фразу «Hello, World!». И эту программу мы запустили с помощью PyCharm.

Однако это не единственный способ выполнять Python-скрипты. Рассмотрим еще несколько вариантов.

И первый — это запуск программ из командной строки. Введем в строке поиска введем cmd и кликнем по найденной программе. Появилось черное окно — это командная строка. Мы уже запускали её ранее, когда проверяли установлен ли Python.

И командная строка — это такое место, где вы можете вводить разные команды, а также названия программ и они будут выполнятся. Программистам часто приходится иметь дело с командными строками, терминалами и другими похожими оболочками.

Чтобы в командной строке запустить Python-программу нужно сперва перейти в каталог, где эта программа расположена.

По умолчанию после открытия терминала мы находимся в домашней папке активного Windows-пользователя. И так как все наши проекты хранятся в каталоге PycharmProjects, то нужно ввести:

cd PycharmProjects

cd — это команда для смены текущего каталога. Сокращение от Change dir. Нажмем Enter. И мы в каталоге с проектами. Теперь перейдем непосредственно в наш проект. Снова ведем команду cd после которой укажем имя проекта (sepython):

cd sepyhton

Нажму Enter. Командная строка вывела, что системе не удается найти указанный путь. Если вы видите такую же надпись, то причин может быть две:

Первая — это опечатка в имени файла или каталога. Это самая распространенная ошибка, внимательно проверьте то, что набрали.
Вторая причина может заключаться в том, что в данном каталоге просто нет папки SEPython. Возможно вы создали её в другом месте.

Чтобы проверить какие файлы или каталоги есть в текущей директории, надо набрать команду dir.

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

Для этого надо снова ввести команду cd, за ней пробел, а после написать se и нажать клавишу Tab. Командная строка сама дополнит имя каталога до правильного. После чего нужно снова нажать Enter и нас сразу переместит в каталог с проектом.

Если мы еще раз выполним комунд dir, то увидим каталоги Lessons и Tasks, а также файл main.py.

Что ж, нам надо запустить нашу программу hello_world.py, а она находится в папке Lessons. Перейдем в неё:

cd Lessons

Теперь надо запустить hello_world.py и для этого надо сперва написать python, а затем через пробел имя программы hello_world.py:

python hello_world.py

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

Что ж, нажму Enter! Программа вывела фразу «Hello, world! Отлично, у нас всё получилось.

Теперь давайте рассмотрим несколько распространенных ошибок, которые у вас могут возникнуть на данном этапе. Первая — это снова опечатка. Если поменять два последних символа местами и снова попробовать запустить программу, то мы увидим ошибку, что файл hello_world.yp не найден в текущем каталоге. Когда вы видите такую ошибку, то это повод проверить имя файла, а также его реальное присутствие в данной директории.

В целом с hello_world мы закончили, и осовная проблема данной прогарммы в том, что она всегда будет выводить фразу, которую мы задали внутри программы, а это делает код абсолютно бесполезным. Другое дело hello_user.py, которую я добавил самостоятельно (у вас этой программы пока нет).

Сейчас я покажу как она работает, а в следующем уроке покажу и объясню её исходный код. То есть то, что находится внутри скрипта.

Итак давайте введем:

python hello_user.py

Программа вывела что-то непонятное. На самом деле она завершилась с ошибкой. Дело в том, что скрипт hello_user.py нужно запускать с передачей аргументов или другими словами с передачей дополнительных параметров.

Это значит, что нужно писать python hello_user.py плюс еще какой-то текст, например такой:

python hello_user.py Nikita

В этом случае слово Nikita — это аргумент командной строки, который при запуске будет отправлен в программу hello_user.py.

То есть сейчас в строке три элемента: сам python, имя программы hello_user.py и аргумент командной строки Niktia.

Python запустит программу hello_user.py и передаст в неё слово Nikita. Программа в свою очередь примет это слово и что-то с ним сделает. Давайте посмотрим, что именно, нажмем Enter..

Скрипт отработал без ошибок и поздоровался с нами: «Hello Nikita. Отлично.

Если при запуске передать другой параметр, например Nikita заменить Alena, то скрипт поздоровается с Аленой:

python hello_user.py Alena

То есть теперь программа не просто работает, а она уже умеет каким-то элементарным способом обрабатывать входящие данные и выводить различные результаты в зависимости от этих данных.

В этом курсе, при решении задач, вам часто придется писать подобные программы, которые умеют принимать и обрабатывать входящие данные. И как это правильно сделать мы разберем в следующем уроке.

Следующий урок

Урок 7. Запуск программ с одним аргументом

В этом уроке вы узнаете как писать python-программы, которые принимают аргументы командой строки, а также о том, как из запускать.

Посмотреть

Полный курс с практикой

  • 146 уроков
  • 306 заданий
  • Сертификат
  • Поддержка преподавателя
  • Доступ к курсу навсегда
  • Можно в рассрочку

Шаг 2. Написание и запуск кода

Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

Хотя управление файлами проекта осуществляется в обозревателе решений, с содержимым файлов, например файлов исходного кода, вы обычно работаете в окне редактора. Редактор распознает тип редактируемого файла с учетом контекста. Он также определяет язык программирования (благодаря расширению файла) и обеспечивает характерные для этого языка возможности, например раскраску синтаксических конструкций и автоматическое завершение с помощью IntelliSense.

  1. При создании проекта «Python Application» в редакторе Visual Studio откроется пустой файл по умолчанию с именем PythonApplication1.py.
  2. В редакторе начните вводить print(«Hello, Visual Studio») . По мере ввода функция IntelliSense в Visual Studio покажет варианты автозавершения. Выделенный параметр в раскрывающемся списке — это вариант завершения по умолчанию, который применяется при нажатии клавиши TAB. Завершения очень удобны при использовании длинных инструкций или идентификаторов. IntelliSense auto-completion popup
  3. Функция IntelliSense отображает различные сведения на основе используемого оператора, вызываемой функции и т. д. Если в функции print ввести ( после print для указания вызова функции, будет показана полная информация об использовании этой функции. Во всплывающем окне IntelliSense также полужирным шрифтом выделяется текущий аргумент (в этом случае это value): IntelliSense auto-completion popup for a function
  4. Допишите оператор, чтобы он соответствовал следующему коду:

print("Hello, Visual Studio") 

IntelliSense syntax coloring and error highlighting

Обратите внимание на раскраску синтаксических конструкций, которая позволяет отличить оператор print от аргумента «Hello Visual Studio» . Можно ненадолго удалить последний символ » в строке. Обратите внимание, что код, содержащий синтаксические ошибки, подчеркивается красной линией в Visual Studio. Снова введите символ » , чтобы исправить ошибку.

Совет Visual Studio предоставляет полный контроль над внешним видом и поведением среды разработки, что позволяет настроить ее, как вам нравится. Выберите пункт меню Сервис>Параметры и изучите параметры на вкладках Среда и Текстовый редактор. По умолчанию вы видите ограниченный набор параметров. Чтобы просмотреть все параметры для каждого языка программирования, щелкните Показать все параметры внизу диалогового окна.

  • Чтобы выполнить весь написанный код, нажмите клавиши CTRL+F5 или выберите команду меню Отладка>Запуск без отладки. Если в коде все еще есть ошибки, в Visual Studio будут выведены предупреждения.
  • Во время выполнения программы в окне консоли будут отображаться результаты. Это напоминает запуск интерпретатора Python с файлом PythonApplication1.py из командной строки. Чтобы закрыть это окно и вернуться в редактор Visual Studio, нажмите любую клавишу. Output for the first run of the program
  • Помимо инструкций и функций, IntelliSense выводит варианты для завершения операторов Python import и from . Эти варианты позволяют легко узнать, какие модули доступны в вашей среде и какие члены доступны в определенном модуле. В редакторе удалите строку print и начните вводить import . Список модулей появляется после ввода пробела: IntellSense showing available modules for an import statement
  • Завершите строку, введя или выбрав sys .
  • В следующей строке введите from , чтобы снова вывести список модулей: IntellSense showing available modules for a from statement
  • Выберите или введите math , а затем пробел и import , чтобы отобразился список элементов модуля: IntellSense showing module members
  • Наконец импортируйте элементы cos и radians . Обратите внимание, как для каждого из них будут выводиться варианты автозавершения. По завершении код должен выглядеть следующим образом:

    import sys from math import cos, radians 

    Совет Принцип функции завершения заключается в следующем — по мере ввода появляются подстроки со словами, в которых совпадают части или буквы в начале слова, и даже отображаются пропущенные символы. Дополнительные сведения см. в руководстве по редактированию кода.

    for i in range(360): print(cos(radians(i))) 

    Как запустить файл со скриптом из другого файла со скриптом, запускающим первый файл?

    Всем привет. Кто-нибудь знает способы запуска скрипта на python, который, к примеру, находится в файле file_1.py путем запуска другого файла file_2.py с кодом для запуска file_1.py. Для пояснения скажу, что в file_1.py находиться бесконечный цикл, который записывает данные в файл, поэтому простым импортом тут не обойтись, так как код в file_2.py должен интерпретироваться дальше после запуска file_1.py.

    • Вопрос задан более трёх лет назад
    • 1936 просмотров

    Комментировать
    Решения вопроса 1

    Viktor_T2

    python developer
    subprocess же:

    import subprocess cmd = 'python script.py' p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) out, err = p.communicate() result = out.split('\n') for lin in result: if not lin.startswith('#'): print(lin)

    Ответ написан более трёх лет назад
    Нравится 2 1 комментарий

    samodurOFF

    Данил Самодуров @samodurOFF Автор вопроса
    Про subprocess много слышал, но работать не приходилось. Спасибо, попробую.
    Ответы на вопрос 1

    Привет! Как я понял тебе нужно инжектировать\импортировать код после выполнения первого скрипта. Import можно вызывать и в конце скрипт, и даже используя условия. Вот пример:

    import_rand = False if import_rand: import random print(int(random.randrange(10))) elif not import_rand: print(int(random.randrange(10)))

    Если True, то модуль random импортируется и выведется число, если False, то будет ошибка (Модуль random не найден).

    Ответ написан более трёх лет назад
    Нравится 1 3 комментария

    samodurOFF

    Данил Самодуров @samodurOFF Автор вопроса

    Если честно, то я не понял как ваше решение подходит в моем случае. Поясню еще. Код в file_2.py использует данные из файла, который был создан через file_1.py. Этот файл, пусть он будет назваться data.csv, постоянно пополняется новыми данными, которые постоянно обрабатываются в file_2.py циклом. Поэтому, как мне кажется, код в file_2.py должен выглядеть примерно так:

    import pandas as pd # ТРИГЕР для запуска кода в file_1.py, чтобы получить файл data.csv while True: df = pd.read_csv('data.csv') print(df.tail())

    Так вот, мне и нужно понять, как реализовать этот ТРИГЕР

    Данил Самодуров, Снова здравствуйте. Создайте в file_1 функцию, например gen_file потом импортируйте ее в file_2 при помощи from file_1 import gen_file. После этого вы можете вызывать когда вам нужно функцию внутри другого фала, также передавать ему атрибуты через эту функцию и получать ответ через return (если нужно). Если вы не знаете как работать с функциями, то вот простой пример —

    def gen_file(const_one, const_two): print("<> <>".format(str(const_one), str(const_two)))

    В другом файле нам нужно вызвать эту функцию, для этого мы пишем такой код —

    from file_1 import gen_file a = "Это константа 1" b = "А это константа 2" gen_file(a, b)

    Будет выведено в консоль —

    Это константа 1 А это константа 2

    samodurOFF

    Данил Самодуров @samodurOFF Автор вопроса

    koval01, я знаю как работать с функциями. file_1.py уже и так содержит функцию и я ее импортировал в file_2.py. Это первое что пришло мне в голову. Но, как вы поняли, это не сработало. Проблема в том, что функция в file_1.py сдержит бесконечный цикл и ничего не возвращается через return. При ее вызове через импорт в file_2.py код ниже места вызова исполняться не будет, так как интерпретатор будет ожидать завершение работы скрипта в file_1.py а этого не происходит.

    Как сделать вызов функции из другого файла в python?

    Чтобы сделать вызов функции из другого файла в python, ее необходимо сначала импортировать. Вы можете импортировать как весь файл(модуль), так и отдельно функции из него. Для импорта, каталог, в котором лежит файл, должен быть пакетом(package), то есть содержать в себе файл init.py .

    Импорт модуля. В таком случае функции из модуля вызываются через точку:

    from my_package import my_module # где my_package - пакет # my_module - искомый файл def main(): x = my_module.function() . 

    Импорт конкретной функции из модуля:

    from my_package.my_module import function def main(): x = function() . 
  • Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *