Почему относительные пути в python не работают при запуске из C #, но работают при использовании одного и того же интерпретатора вне c #? - PullRequest
0 голосов
/ 19 мая 2019

Я пытаюсь запустить скрипт Python из C #, который читает файл в том же каталоге, что и скрипт Python.

with open('./input.txt') as f:
    print(f.read().strip())

Вот минимальный рабочий пример кода c #:

var pi = new ProcessStartInfo
{
    FileName = @"path-to-python.exe",
    RedirectStandardOutput = true,
    RedirectStandardError = true,
    Arguments = @"path-to-script.py",
};

using (var p = Process.Start(pi))
using (var reader = p.StandardOutput)
{
    var err = p.StandardError.ReadToEnd();
    var res = reader.ReadToEnd();
    Console.WriteLine(err);
    Console.WriteLine(res);
}

До сих пор я пытался:

  1. запустить скрипт python из cmd с тем же интерпретатором, который я предоставляю для c #, "path-to-python.exe", которыйработает.
  2. указание полного абсолютного пути в скрипте python и запуск его из c #, это тоже работает.

Я получаю сообщение об ошибке:

[Errno 2] No such file or directory: './input.txt'

1 Ответ

0 голосов
/ 19 мая 2019
print(os.getcwd())

действительно отвечает на этот вопрос

Project\bin\Debug\netcoreapp2.2

Очевидно, что c # запускает файл python не из его текущего местоположения, а из отладки, это должно было быть очевидно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...