VSCode运行Python时input.txt输入重定向不生效如何配置?
错误原因
args字段的作用是传递参数给待运行的Python程序,而<属于shell的重定向运算符,不属于Python程序的入参。VSCode生成命令时会自动对args下的所有内容做转义处理,添加单引号避免特殊字符被shell解析,因此会出现重定向符失效的问题。
解决方案1:使用调试器原生输入重定向(推荐,支持调试)
直接修改launch.json配置,删除原有的args配置段,新增两个调试配置项即可:
{ "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "redirectStdin": true, "stdinFilePath": "${fileDirname}/input.txt" } ] }
其中${fileDirname}是VSCode内置变量,代表当前运行的Python文件所在目录,会自动匹配同目录下的input.txt,不需要写死绝对路径。
解决方案2:通过任务配置使用shell重定向(适合直接运行不需要调试的场景)
如果不需要调试功能,仅需要运行代码时读取输入,可以通过配置自定义任务实现:
- 按下
Ctrl+Shift+P打开命令面板,输入Tasks: Configure Task,依次选择「创建tasks.json文件」→「Others」 - 在生成的
tasks.json中写入以下配置:
{ "version": "2.0.0", "tasks": [ { "label": "运行Python并读取input.txt", "type": "shell", "command": "python ${file} < input.txt", "options": { "cwd": "${fileDirname}" }, "group": { "kind": "build", "isDefault": true } } ] }
- 后续需要运行代码时,按下
Ctrl+Shift+B即可执行该任务,自动从同目录的input.txt读取输入。
内容的提问来源于stack exchange,提问作者오승현
相关产品推荐
相关产品推荐

