说明网
电脑网络 1 个回答

C#中如何将文件路径作为命令行参数传递给Python脚本并让Python读取该文件

吴福基 提问者

发布于 2026-10-24

问题补充

在C#中通过Process类启动Python解释器,将文件路径作为命令行参数传入。Python端使用sys.argv接收参数并操作文件。需注意路径含空格时的引号处理及跨平台差异。

1 个回答

按发布时间排序
马路流星 回答者

回答于 2026-10-24

在C#中使用System.Diagnostics.Process类调用Python解释器,将文件路径作为命令行参数传递;在Python脚本中通过sys.argv获取该路径并进行文件操作。

实现步骤

1. C#端代码

using System.Diagnostics;

string pythonPath = "python"; // 或Python解释器的绝对路径
string scriptPath = @"C:\scripts\process_file.py";
string filePath = @"C:\data\my file.txt"; // 包含空格的路径

var startInfo = new ProcessStartInfo
{
    FileName = pythonPath,
    Arguments = $"\"{scriptPath}\" \"{filePath}\"",
    RedirectStandardOutput = true,
    UseShellExecute = false,
    CreateNoWindow = true
};

using (var process = Process.Start(startInfo))
{
    string output = process.StandardOutput.ReadToEnd();
    process.WaitForExit();
}

2. Python端代码(process_file.py)

import sys

if len(sys.argv) > 1:
    file_path = sys.argv[1]
    with open(file_path, 'r', encoding='utf-8') as f:
        content = f.read()
        print(content)
else:
    print("未接收到文件路径参数")

判断依据与适用条件

  • sys.argv[0]为脚本自身路径,sys.argv[1]为传入的第一个参数。
  • 适用于本地进程间通信场景,要求运行环境已安装Python且配置了环境变量,或在C#中指定了Python解释器的完整路径。

常见误区

  • 路径含空格未加引号:若文件路径包含空格且未用双引号包裹,操作系统会将其拆分为多个参数,导致Python端解析错误。必须在C#的Arguments中对路径加转义双引号。
  • 编码不一致:C#与Python默认编码可能不同,读写文件时应显式指定统一编码(如UTF-8)。
  • 阻塞问题:未调用WaitForExit()或未异步读取输出流时,可能导致父进程挂起或死锁。

内容由网友提供,仅供参考。