You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本中用subprocess.run()执行dotnet命令报错,CMD运行正常求助

Python subprocess执行dotnet命令报错:命令未被识别

我尝试在Python脚本中运行一个需通过CMD访问的程序,代码如下:

command = 'C:\\Users\\xxx\\Documents\\chatbot.Cli\\dotnet chatbot.Cli.dll export -f PlainText -p 140 -o "C:\\Users\\xxx\\Documents\\xxx.txt" --after "2023-05-18 09:00"'

subprocess.run(command, shell=True)

运行后出现错误:

'C:\Users\xxx\Documents\chatbot.Cli\dotnet' 未被识别为内部或外部命令、可运行的程序或批处理文件。

已安装.NET 7.0,且在CMD中执行完全相同的命令可正常运行,求问问题原因及解决办法。


解决方案
  • 问题核心:你错误地将dotnet命令的路径指定为C:\\Users\\xxx\\Documents\\chatbot.Cli\\dotnet,但dotnet是.NET框架的全局可执行命令,本身不在你的chatbot.Cli目录下。CMD中能正常运行,是因为dotnet已加入系统环境变量PATH,系统可以直接找到它;而Python脚本里的命令给dotnet硬加了本地路径,导致系统找不到这个不存在的文件。

  • 修正后的代码(保留shell=True):

import subprocess

# 正确的命令是直接调用dotnet,再指定dll文件的完整路径
command = 'dotnet "C:\\Users\\xxx\\Documents\\chatbot.Cli\\chatbot.Cli.dll" export -f PlainText -p 140 -o "C:\\Users\\xxx\\Documents\\xxx.txt" --after "2023-05-18 09:00"'
subprocess.run(command, shell=True)
  • 更安全的写法(不依赖shell=True):
    避免使用shell=True可以降低shell注入风险,将命令拆分为列表参数传递:
import subprocess

command = [
    'dotnet',
    'C:\\Users\\xxx\\Documents\\chatbot.Cli\\chatbot.Cli.dll',
    'export',
    '-f', 'PlainText',
    '-p', '140',
    '-o', 'C:\\Users\\xxx\\Documents\\xxx.txt',
    '--after', '2023-05-18 09:00'
]
subprocess.run(command, check=True)  # check=True可在命令执行失败时抛出异常

内容的提问来源于stack exchange,提问作者Tim Doll

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:00:06