Прежде чем пометить это как репост, пожалуйста, прочитайте мою проблему xD Я не смог найти никаких ответов на мой патичный вопрос.
Я пытаюсь запустить скрипт Python из программы на C #,Теперь я создал и протестировал свой скрипт на Python, и при запуске из моей IDE (Visual Studio 2017) он работает отлично.Теперь, когда я пытаюсь выполнить его как процесс из моей программы на C #, на короткое время появляется командная строка (когда я говорю кратко, это больше похоже на то, что она мигает на экране), но мой скрипт не запускается.
Код длямой скрипт на python:
import os
import shutil
from pptx import Presentation
from pptx.table import Table
from pptx.text.text import TextFrame
from pptx.text.text import Pt
from pptx.dml.color import RGBColor
#Get ressources dir:
currentWorkingDir = os.getcwd()
ressourceDir = currentWorkingDir[:-31 ]
#Open files and read into variables
agendaInputFile = open(ressourceDir + "agendaInputs.txt", "r", encoding="utf8")
agendaInputs = agendaInputFile.readlines()
agendaTimesFile = open(ressourceDir + "agendaTimes.txt", "r", encoding="utf8")
agendaTimes = agendaTimesFile.readlines()
meetingTitleFile = open(ressourceDir + "meetingTitle.txt", "r", encoding="utf8")
meetingTitle = meetingTitleFile.readline()
presentersFile = open(ressourceDir + "presenters.txt", "r", encoding = "utf8")
presenters = presentersFile.readlines();
#Opens the template ppt-file
prs = Presentation(ressourceDir + "agendaTemplate.pptx")
#selects the first slide
slide = prs.slides[0]
#Sets the meetingtitle
title = slide.shapes[1]
title.text = meetingTitle[:-1]
#finds the table
graphicFrame = slide.shapes[2]
table = graphicFrame.table
#sætter agendapunkterne
i = 0
while i < len(agendaInputs):
cell = table.cell(i+1,1)
textFrame = cell.text_frame
run = textFrame.paragraphs[0].add_run()
font = run.font
font.name = 'TSTAR PRO'
font.size = Pt(16)
run.text = agendaInputs[i][:-1]
font.color.theme_color = 5
i += 1
#Sætter agendatiderne
i = 0
while i < len(agendaTimes):
cell = table.cell(i+1,0)
textFrame = cell.text_frame
run = textFrame.paragraphs[0].add_run()
font = run.font
font.name = 'TSTAR PRO'
font.size = Pt(16)
run.text = agendaTimes[i][:-1]
font.color.theme_color = 5
i += 1
#Sætter presenter
i = 0
while i < len(presenters):
cell = table.cell(i+1,2)
textFrame = cell.text_frame
run = textFrame.paragraphs[0].add_run()
font = run.font
font.name = 'TSTAR PRO'
font.size = Pt(16)
run.text = presenters[i][:-1]
font.color.theme_color = 5
i += 1
#saves the ppt
prs.save("Agenda Slide.pptx")
#File is deleted from the desktop if present there
if os.path.exists("Agenda Slide.txt"):
os.remove("Agenda Slide.txt")
#File moved to the desktop
shutil.move(os.getcwd() + "\\Agenda Slide.pptx", os.path.join(os.environ["HOMEPATH"], "Desktop") + "\\Agenda Slide.pptx")
Теперь, как я уже сказал, когда я запускаю его из моей IDE, он работает как шарм.
Файлы, которые я открываю и читаю в скрипте python,написано моей программой на C #.Это низкоуровневый способ переноса переменных из моего C # в мой Python, не очень, я знаю .. xD
Из моей программы на c # я запускаю скрипт так:
private void runPythonScript()
{
Process p = new Process(); // create process (i.e., the python program
p.StartInfo.FileName = @"C:\Python34\python.exe";
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.UseShellExecute = false;
p.StartInfo.Arguments = getRessourcesDir() + "createAgendaPPT\\createAgendaPPT\\createAgendaPPT.py";
p.Start();
p.WaitForExit();
p.Close();
}
Функция getRessourcesDir()
просто возвращает каталог для папки Ressources в решении.
Подводя итог:
- Попытка запустить скрипт Python из C #
- Pythonscript будет работать правильно из моей IDE, но не при запуске .py файла.
Что мне нужно для помощи: Как сделать скрипт Python запускаемым из его файла .py и как запустить его изC #.
Если что-то неясно или отсутствует, пожалуйста, дайте мне знать, и я отредактирую свой пост и исправлю его.