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

Windows系统下VSCode中如何用文件作为Python程序的标准输入?

解决Windows下VSCode Python读取输入文件的重定向问题

问题原因

Windows的PowerShell中,<是保留操作符,无法通过launch.json的args参数传递给终端作为输入重定向指令——VSCode会将其当成Python程序的命令行参数,而非终端的重定向操作,因此触发报错。

解决方案

方案1:切换VSCode默认终端为CMD

这是最直接的解决方法,CMD原生支持<输入重定向语法:

  • 打开VSCode终端面板(快捷键:`Ctrl+``)
  • 点击终端面板右上角的下拉菜单,选择Select Default Profile
  • 在弹出选项中选择Command Prompt(CMD)作为默认终端
  • 保持launch.json原有配置即可:
    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Python: Current File",
                "type": "python",
                "request": "launch",
                "program": "${file}",
                "args": ["<", "${workspaceFolder}/input.txt"],
                "console": "integratedTerminal"
            }
        ]
    }
    

运行程序后,CMD会自动识别<为输入重定向,从input.txt读取标准输入。

方案2:使用PowerShell兼容的管道方式

若不想切换终端,可通过PowerShell的管道语法实现输入重定向:

  1. 修改launch.json配置:
    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Python: Current File with Input",
                "type": "python",
                "request": "launch",
                "program": "${file}",
                "console": "integratedTerminal",
                "args": [],
                "preLaunchTask": "pipe-input"
            }
        ]
    }
    
  2. 在项目根目录的.vscode文件夹下创建tasks.json,添加如下任务:
    {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "pipe-input",
                "type": "shell",
                "command": "Get-Content ${workspaceFolder}/input.txt | python ${file}",
                "problemMatcher": []
            }
        ]
    }
    

该方案通过PowerShell的Get-Content命令读取文件内容,再通过管道传递给Python程序作为标准输入。

方案3:代码层面兼容(无需配置终端)

若不想修改VSCode配置,可在Python代码开头添加一段逻辑,自动从指定文件读取输入:

import sys

def main():
    # 优先从input.txt读取输入,否则使用标准输入
    if '--input' in sys.argv:
        with open('input.txt', 'r') as f:
            sys.stdin = f
    # 后续正常读取标准输入即可
    data = sys.stdin.read()
    print(data)

if __name__ == '__main__':
    main()

运行时在launch.json的args中添加["--input"],即可自动读取input.txt的内容。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 03:14:56