Открыть скрипт из скрипта python

How can I make one python file run another? [duplicate]

How can I make one python file to run another? For example I have two .py files. I want one file to be run, and then have it run the other .py file.

8 Answers 8

There are more than a few ways. I’ll list them in order of inverted preference (i.e., best first, worst last):

  1. Treat it like a module: import file . This is good because it’s secure, fast, and maintainable. Code gets reused as it’s supposed to be done. Most Python libraries run using multiple methods stretched over lots of files. Highly recommended. Note that if your file is called file.py , your import should not include the .py extension at the end.
  2. The infamous (and unsafe) exec command: Insecure, hacky, usually the wrong answer. Avoid where possible.
    • execfile(‘file.py’) in Python 2
    • exec(open(‘file.py’).read()) in Python 3
  3. Spawn a shell process: os.system(‘python file.py’) . Use when desperate.

just to add a bit of detail to case #1: say you want to import fileB.py into fileA.py. assuming the files are in the same directory, inside fileA you’d write import fileB . then, inside fileA, you can call any function inside fileB like so: fileB.name_of_your_func() . there’s more options and details of course, but this will get you up and running.

Читайте также:  HTML Image as link

Using import adds namespacing to the functions, e.g. function() becomes filename.function(). To avoid this use «from name import *». This will also run the code body. Running with os.system() will not keep the defined function (as it was run in another process). execfile is exec() in Python 3, and it doesn’t work.

Get one python file to run another, using python 2.7.3 and Ubuntu 12.10:

#!/usr/bin/python import yoursubfile 

Thus main.py runs yoursubfile.py

There are 8 ways to answer this question, A more canonical answer is here: How to import other Python files?

I used subprocess.call it’s almost same like subprocess.Popen

from subprocess import call call(["python", "your_file.py"]) 
import os os.system('python filename.py') 

note: put the file in the same directory of your main python file.

@Moondra Yes, this method does spawn another process, at least on Windows. On the other hand, importing the file does not. [Tested it by running tasklist | findstr «python» in cmd]

from subprocess import Popen Popen('python filename.py') 

Exactly I was looking for. All the other answers ` import secondary exec(open(‘secondary.py’).read()) os.system(‘python secondary.py’) call([«python», «secondary.py»]) ` they don’t allow creating multiple instances of the secondary python file at the same time. They all wait for the execution to finish only then you can call that file again. Only Popen allows multiple async calls. Thanks again.

Say if there is a def func1() within filename.py , then how to just run this particular function only under Popen(‘python filename.py’) approach?

Источник

Запуск python-скрипта с помощью другого python-скрипта

У меня есть два файла python: main.py и test.py Я использую cmd, чтобы запустить каждый из них, у меня получается две консоли, со скриптами, которые работают в фоне(это б оты). Возможно ли, с помощью python, запускать другие python скрипты отдельно? Например, я запускаю start.py, а он запускает main.py и test.py в новых консолях.

6 ответов 6

попробуй import метода из второго скрипта, и потом вызови этот метод в первом

Можно это реализовать с помощью импортов нужных файлов. Для этого файл start.py должен выглядеть так:

Это не совсем, то что мне нужно. Нужен способ, который позволит запустить новую консоль и запустить в ней нужный скрипт. Я пишу бота, который для управления ПК дистанционно. Бот будет иметь возможность запускать python скрипты, отдельно от себя, как если бы я это сам сделал, открыл консоль и запустил первый скрипт, затем открою новую консоль и запущу второй скрипт и они спокойно работают в фоне

Если нужно запустить python скрипт в отдельном окне то можно сделать так:

import os os.system("start cmd /k python test.py") 

Возможно ли, с помощью python, запускать другие python скрипты отдельно?

Я думаю, что python-модуль multyprocessing вполне удовлетворит Вашим запросам:

multiprocessing — Process-based parallelism

Introduction

multiprocessing is a package that supports spawning processes using an API similar to the threading module. The multiprocessing package offers both local and remote concurrency, effectively side-stepping the Global Interpreter Lock by using subprocesses instead of threads. Due to this, the multiprocessing module allows the programmer to fully leverage multiple processors on a given machine. It runs on both Unix and Windows.

Источник

Python запускает другой скрипт Python

Python запускает другой скрипт Python

  1. Используйте оператор import для запуска сценария Python в другом сценарии Python
  2. Используйте метод execfile() для запуска скрипта Python в другом скрипте Python
  3. Используйте модуль subprocess для запуска скрипта Python в другом скрипте Python

Базовый текстовый файл, содержащий код Python, который предназначен для непосредственного выполнения клиентом, обычно называется сценарием, формально известным как программный файл верхнего уровня.

Скрипты предназначены для непосредственного выполнения на Python. Научиться запускать сценарии и код — это фундаментальный навык в мире программирования на Python. Скрипт Python обычно имеет расширение ‘.py’ . Если сценарий запускается на машине с Windows, он может иметь расширение .pyw .

В этом руководстве будут рассмотрены различные методы запуска сценария Python внутри другого сценария Python.

Используйте оператор import для запуска сценария Python в другом сценарии Python

Оператор import используется для импорта нескольких модулей в код Python. Он используется для получения доступа к определенному коду из модуля. Этот метод использует оператор import для импорта скрипта в код Python и использует его как модуль. Модули можно определить как файл, содержащий определения и инструкции Python.

В следующем коде оператор import используется для запуска сценария Python в другом сценарии Python.

def func1():  print ("Function 1 is active")  if __name__ == '__main__':  # Script2.py executed as script  # do something  func1() 
import Script1.py  def func2():  print("Function 2 is active")  if __name__ == '__main__':  # Script2.py executed as script  # do something  func2()  Script1.func1() 
Function 2 is active Function 1 is active 

Используйте метод execfile() для запуска скрипта Python в другом скрипте Python

Функция execfile() выполняет в интерпретаторе нужный файл. Эта функция работает только в Python 2. В Python 3 функция execfile() была удалена, но то же самое можно сделать в Python 3 с помощью метода exec() .

# Python 2 code execfile("Script1.py") 

Используйте модуль subprocess для запуска скрипта Python в другом скрипте Python

Модуль subprocess может порождать новые процессы, а также может возвращать их выходные данные. Это новый модуль, предназначенный для замены нескольких старых модулей, таких как os.system , которые ранее использовались для запуска сценария Python в другом сценарии Python.

def func1():  print ("Function 1 is active")  if __name__ == '__main__':  # Script2.py executed as script  # do something  func1() 
import subprocess  subprocess.call("Script1.py", shell=True) 

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

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

Источник

How to execute a python script file with an argument from inside another python script file

My problem is that I want to execute a python file with an argument from inside another python file to get the returned values. I don’t know if I’ve explained it well. example: from the shell I execute this:

 getCameras.py "path_to_the_scene" 

and this return me a list of cameras. so how can I call this script (including the argument) from another script . I’ve been trying to figure it out by myself by reading some other questions here , but I didn’t get it well, should I use the execfile() function?? how exactly?? Thanks in advance for helping a newbie like me!! Ok, after take a look at your answers, I have to edit my question to make it more concise and because I don’t understand some answers(sorry, like I said I’m a newbie. ): I have two scripts, getMayaCameras.py and doRender.py , and one more, renderUI.py , that implements the first two scripts in a GUI. getMayaCameras.py and doRender.py are both scripts that you can execute directly from the system shell by adding an argument (or flags, in the doRender.py case) and, if it is possible, I want to still having this possibility so I can choose between execute the UI or execute the script directly from the shell. I’ve made already some modifications for them to work by importing them from renderUI.py but now they don’t work by themselves. Is possible to have these scripts working by themselves and still having the possibility of calling them from another script? How exactly? This «separating the logic from the command line argument handling» that you told me before sounds good to me but I don’t know how to implement it on my script (I tried but without success). That’s why I’m posting here the original code for you to see how I made it, feel free both to make critics and/or correct the code to explain me how I should make it for the script to work properly.

#!/usr/bin/env python import re,sys if len(sys.argv) != 2: print 'usage : getMayaCameras.py \nYou must specify the path to the origin file as the first arg' sys.exit(1) def getMayaCameras(filename = sys.argv[1]): try: openedFile = open(filename, 'r') except Exception: print "This file doesn't exist or can't be read from" import sys sys.exit(1) cameras = [] for line in openedFile: cameraPattern = re.compile("createNode camera") cameraTest = cameraPattern.search(line) if cameraTest: cameraNamePattern = re.compile("-p[\s]+\"(.+)\"") cameraNameTest = cameraNamePattern.search(line) name = cameraNameTest.group(1) cameras.append(name) openedFile.close() return cameras getMayaCameras() 

Источник

Оцените статью