Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Python脚本无法从C或通过运行.py启动_C#_Python_Process - Fatal编程技术网

C# Python脚本无法从C或通过运行.py启动

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

在您将此标记为转载之前,请阅读我的问题xD,我还没有找到我的特定问题的任何答案

我正在尝试从C程序启动Python脚本。现在,我已经制作并测试了我的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")
函数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");