c# 코드에서 파이썬 크롤링 스크립트나 기타 파이썬 라이브러리 스크립트를 실행이 필요할 때 ProcessStart를 사용하여 실행하는 방법입니다.
1.파이썬 스크립트 생성
스크립트를 실행하면 스크립트실행이라는 문구가 출력되는 파이썬 스크립트를 아래와 같이 작성합니다.
2.C# 코드에서 Porcess 클래스를 통한 실행로직 작성
c#에서 파이썬 스크립트를 실행하기 위한 코드를 작성 해줍니다.
private string _pythonPath = "D:\\Source\\Test\\myenv\\Scripts\\python.exe";
public string ProcessStart(string scriptPath ,string arguments)
{
using (Process process = new Process())
{
process.StartInfo.FileName = _pythonPath; // 파이썬 실행 파일의 경로 (파이썬이 시스템 PATH에 추가되어 있어야 함)
process.StartInfo.Arguments = $"{scriptPath} {arguments}";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.Start();
// 파이썬 스크립트의 출력을 읽음
string output = process.StandardOutput.ReadToEnd();
string error = process.StandardError.ReadToEnd();
process.WaitForExit();
Console.WriteLine("Output:");
Console.WriteLine(output);
Console.WriteLine("Error:");
Console.WriteLine(error);
return output;
}
}
위와 같이 Process 클래스를 사용하여 프로세스를 실행하고 이때 startInfo 에 기본적인 설정 값들을 할당 해줍니다.
하나씩 살펴보면 아래와 같습니다.
StartInfo 속성 의미
StartInfo.FileName = 설정할 파이썬의 실행 경로 세팅
StartInfo.Argument = 파이썬 스크립트 경로 및 아규먼트 세팅
StartInfo.UseShellExecute = 프로세스 직접실행 or 쉘 실행 여부
StartInfo.RedirectStandardOutput = 스크립트에서 출력된 값 반환
StartInfo.RedirectStandardError = 스크립트에서 출력된 에러 값 반환
StartInfo.CreateNoWindow = 윈도우창 생성 여부
위처럼 스크립트에서 반환되는 값을 얻기 위해서는 StartInfo의 RedirectStandardOutput을 설정해야 합니다.
3. 코드 실행
코드를 실행해보면
아래와 같이 StandardOutput.ReadToEnd()메서드를 통해서 반환값을 받아와 스크립트 실행 문구를 출력하는 것을 확인 할 수 있습니다.
마찬가지로 StandardError.ReadToEnd()메서드를 통해서는 스크립트에서 발생한 에러문구를 받아와 출력 가능합니다.
'c# > .net' 카테고리의 다른 글
C# webview2 확장 사용하는 법 웹뷰 확장 설치(feat.웹뷰 adblock설치하기) (0) | 2024.01.15 |
---|---|
C# fatal error encountered attempting to read the resultset 오류 처리 (1) | 2024.01.04 |
C# Parameter is not valid 에러 비트맵 Graphics 에러 (0) | 2023.12.14 |