Я пытаюсь запустить скрипт python, расположенный в папке на моем сервере из другого сценария python. Местоположение сценария, который я пытаюсь запустить, не находится в том же месте, что и существующий скрипт. Сценарий, который я пытаюсь выполнить, не является функцией, которую мне просто нужно запустить, как только первая завершится, и я знаю, что они оба работают независимо друг от друга. Я нашел аналогичную запись, но получаю ошибку Not Found когда я использую либо os.system либо subprocess.Popen .
Я знаю, что каталог, который я вызываю, является правильным, потому что в предыдущем заявлении я вызываю shutil.move чтобы переместить файл в тот же каталог, который я хотел бы запустить.
Вот что я пробовал:
subprocess.Popen(«/home/xxx/xxxx/xxx/xx/test.py») os.system(«/home/xxx/xxxx/xxx/xx/test.py») subprocess.Popen(«/home/xxx/xxxx/xxx/xx/test.py», shell=True)
Лучший ответ:
Для скрипта, который выполняет операции, связанные с его местоположением, вам нужно сначала получить текущий каталог, в котором вы находитесь, используя originalDir = os.path.dirname(full_path) . Затем вы захотите использовать os.chdir(‘/home/xxx/xxxx/xxx/xx/’) а затем выполните subprocess.Popen(«python test.py», shell=True) для запуска скрипта. Затем выполните os.chdir(originalDir) чтобы вернуться в каталог, в котором вы когда-то были.
Планирование и автозапуск Python скриптов по времени
Вы можете попробовать что-то вроде этого:
original_dir = os.getcwd() script_paths = [«/. path1. /script1.py», «/. path2. /script2.py», «/. path3. /script3.py»] for script_path in script_paths: base_path, script = os.path.split(script_path) os.chdir(original_dir) subprocess.Popen(script) os.chdir(original_dir)
Чтобы запустить скрипт в качестве подпроцесса в его каталоге, используйте параметр cwd :
#!/usr/bin/env python import os import sys from subprocess import check_call script_path = «/home/xxx/xxxx/xxx/xx/test.py» check_call([sys.executable or ‘python’, script_path], cwd=os.path.dirname(script_path))
Отличие от решения os.chdir() -based заключается в том, что chdir() вызывается только в дочернем процессе. Родительский рабочий каталог остается прежним.
sys.executable – это исполняемый файл python, который выполняет родительский скрипт Python. Если у test.py есть правильный набор shebang, и у файла есть права на выполнение, вы можете запустить его напрямую (используйте [script_path] без shell=True ).
Источник: techarks.ru
Запустите скрипт Python из другого скрипта Python, передав аргументы [duplicate]
Я хочу запустить Python script из другого Python script. Я хочу передать переменные, как я бы использовал в командной строке. Например, я бы запускал свой первый script, который перебирал бы список значений (0,1,2,3) и передавал их во второй script script2.py 0 , затем script2.py 1 и т.д. Я нашел SO 1186789, который является аналогичным вопросом, но ars отвечает на вызовы функции, где, поскольку я хочу запустить целую script не только функцию, а вызов balpha вызывает script, но без аргументов. Я изменил это на что-то вроде ниже в качестве теста:
Запуск внешних приложений с помощью python
execfile(«script2.py 1»)
Но он не принимает правильные значения. Когда я печатаю sys.argv в файле script2.py, это первоначальный командный вызов с первым script «[‘C:script1.py’]. Я не хочу менять исходный script (т.е. script2.py в моем примере), так как я его не владею. Я полагаю, что должен быть способ сделать это, я просто смущен, как вы это делаете.
Gern Blanston 23 сен. 2010, в 21:32
Поделиться
Вопрос в том, знаете ли вы имя скрипта (затем импортируете его) или если вы не знаете имя скрипта во время программирования (тогда используйте subprocess.call). Во втором случае этот вопрос также не будет дубликатом. Поскольку вопрос не проясняет, он также не очень хороший.
Trilarion 03 сен. 2015, в 11:37
jfs 29 нояб. 2015, в 08:33
Trilarion 29 нояб. 2015, в 10:05
jfs 29 нояб. 2015, в 10:23
Trilarion 29 нояб. 2015, в 10:24
jfs 10 авг.
2017, в 16:57
Источник: overcoder.net
Python-сообщество
- Начало
- » Python для новичков
- » Проблема. Запуск EXE-файла из скрипта
#1 Ноя. 2, 2014 22:54:50
Проблема. Запуск EXE-файла из скрипта
Доброго времени суток форумчане.
Проблема такова, есть программка Python под Win отлаженная скомпилированная в ехе.
В программе есть кнопка запуска другой, сторонней программы ЕХЕ (далее просто ЕХЕшник) не питоньей.
Для запуска второй программы, нужны рядом лежащие конфиг файлы.
Суть проблемы такова. Если просто запускать программу из под системы — никаких проблем, как только я пытаюсь запустить ЕХЕ из под моей программы, вторая крашится, а сообщение говорит о том что не найдены файлы конфигурации.
Иными словами, моя программа дает управление ЕХЕшнику из под своей папки, и при запуске он не видит свои конфиги, что лежат рядом. (это как понял я)
Вот код:
def start_system():
way_dir = path.normpath(path.join(getcwd(), ‘..’))
system(way_dir + ‘\blablabla.exe’)
sys.exit(0)
Первая строка поднимает рабочий каталог вверх на одну папку
Вторая собственно открывает файл
Пробовал по разному, и юзать startfile, subprocess результат тот же. ЕХЕшник вылетает с ексепшином не найден файл.
Если, в рабочую папку скрипта (питон-программы) положить конфиги — все ок, но это не выход.
Кто может, подскажите. Заранее спасибо.
Источник: python.su