C# Python脚本无法从C或通过运行.py启动
在您将此标记为转载之前,请阅读我的问题xD,我还没有找到我的特定问题的任何答案 我正在尝试从C程序启动Python脚本。现在,我已经制作并测试了我的Python脚本,在IDE Visual Studio 2017中运行它时,它可以完美地工作。现在,当我尝试从我的C程序中以进程的形式执行它时,当我简单地说它更像是在屏幕上闪烁时,会出现一个命令提示符,但我的脚本没有运行 我的python脚本的代码:C# Python脚本无法从C或通过运行.py启动,c#,python,process,C#,Python,Process,在您将此标记为转载之前,请阅读我的问题xD,我还没有找到我的特定问题的任何答案 我正在尝试从C程序启动Python脚本。现在,我已经制作并测试了我的Python脚本,在IDE Visual Studio 2017中运行它时,它可以完美地工作。现在,当我尝试从我的C程序中以进程的形式执行它时,当我简单地说它更像是在屏幕上闪烁时,会出现一个命令提示符,但我的脚本没有运行 我的python脚本的代码: import os import shutil from pptx import Presentat
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")
函数GetResourcesDir只返回解决方案中Resources文件夹的目录
综上所述:
尝试从C启动python脚本
Pythonscript将从我的IDE中正确运行,但不会启动.py文件。
我需要帮助的是:
如何使python脚本可从其.py文件启动,以及如何从C启动
如果有不清楚或遗漏的地方,请告诉我,我将编辑我的帖子并更正。尝试从命令窗口运行python脚本
Process cmdProcess;
StreamWriter cmdStreamWriter;
StreamReader cmdStreamReader;
cmdProcess = new Process();
cmdProcess.StartInfo.FileName = "cmd.exe";
cmdProcess.StartInfo.UseShellExecute = false;
cmdProcess.StartInfo.CreateNoWindow = true;
cmdProcess.StartInfo.StandardOutputEncoding = Encoding.ASCII;
cmdProcess.StartInfo.RedirectStandardOutput = true;
cmdProcess.StartInfo.RedirectStandardInput = true;
cmdProcess.Start();
cmdStreamWriter = cmdProcess.StandardInput;
cmdStreamReader = cmdProcess.StandardOutput;
cmdStreamWriter.WriteLine("python xxxx.py");
尝试从cmd shell命令行运行它。@martineau当我尝试这样做时,它给出错误C:\python34\python.exe:无法打开文件“C:\Users\aalbaek nt\Desktop\createAgendaPPT.py”:[Errno 2]没有这样的文件或目录。但我绝对确定我给了它正确的目录…您应该能够通过输入dir C:\Users\aalbaek nt\Desktop\createAgendaPPT.py来确定给它的内容是否有效。单独键入dir C:\Users\aalbaek nt\Desktop将列出文件夹中的所有文件。@martineau当我运行该命令时,它会说找不到文件,所以我猜快捷方式可能在失败的地方?桌面上的文件createAgendaPPT是真正文件的快捷方式,这会是一个问题吗?原因是我正在使用'os.getcwd'函数查找我正在使用的某些文件的目录,通过移动文件,我担心它将不再指向正确的目录。Yoy应该能够右键单击桌面上xxx的图标并选择属性,这将导致出现一个对话框,其中显示有关对象的信息。如果它是一个快捷方式,那么它会这样说,并向您显示真实文件的位置,即您要使用的路径。From review:您能在回答中添加更多详细信息吗?您发布的代码没有任何意义…谢谢您的帮助,但它似乎也不起作用。。当我将您的代码复制并粘贴到我的函数中,并将最后一行中的xxxx更改为:createAgendaPPT时,调用该函数时不会发生任何事情。您的python脚本必须位于您的build directoryDebug或Release中。@T.Aalbaek这对我有效,但实际上我不知道出了什么问题。尝试在调试目录中打开cmd窗口并手动运行python脚本。
Process cmdProcess;
StreamWriter cmdStreamWriter;
StreamReader cmdStreamReader;
cmdProcess = new Process();
cmdProcess.StartInfo.FileName = "cmd.exe";
cmdProcess.StartInfo.UseShellExecute = false;
cmdProcess.StartInfo.CreateNoWindow = true;
cmdProcess.StartInfo.StandardOutputEncoding = Encoding.ASCII;
cmdProcess.StartInfo.RedirectStandardOutput = true;
cmdProcess.StartInfo.RedirectStandardInput = true;
cmdProcess.Start();
cmdStreamWriter = cmdProcess.StandardInput;
cmdStreamReader = cmdProcess.StandardOutput;
cmdStreamWriter.WriteLine("python xxxx.py");