在VSCode中运行Python脚本文件时如何传参

以下实验所处的操作系统环境说明:

OS版本
MacOSMonterey 12.1
VSCodeOctober 2023 (version 1.84.2)

一、背景

在 VSCode 中写好 Python 脚本后,如果要运行起来,可以怎么做呢?

一般有以下几种方式:

1、直接在 VSCode 中导航至需要运行的 Python 脚本下,运行该脚本:

  • 方法 1:
    点击左上角处运行按钮(三角箭头图标方向朝右);
    在这里插入图片描述
  • 方法 2:
    在这里插入图片描述

2、在终端(如 Terminal)中运行。
可以方便的找到其存储路径,并打开 Terminal 等软件将其运行起来。
python3 test_pass_params.py

二、问题

其中第 1种方式,在 Python 脚本不传参时还可以,倘若脚本需要外部传参,如:

  • KV 型参数:python3 test_pass_params.py -d db_ecommerce -t ads_trade_stats
  • 仅V型参数: python3 test_pass_params.py ${pamam-1} ${pamam-2} ...

则行不通了。

那么如果想在VSCode中运行Python脚本文件时进行传参,又该如何实现呢?

三、解决方案

尝试方案1(Test Fail):

选择VSCode中左侧竖排第四个 Debug 按钮,如果是首次在软件中运行 Python 程序,则在运行和调试单元框里很可能看到的提示是如下这样的。
在这里插入图片描述
我根据提示, 依次点击超链接 1打开待运行 Python 脚本,之后点击超链接 2打开其所在的文件夹。第3 步在很多PC 上会显示“创建一个launch.json文件”的提示,很可惜在我的 PC 上json 字符所在位置不仅不是超链接,而且显示的是翻译过来的“启动.json”字符。

我随后在 Python 脚本所在的目录中创建了这个 launch.json,并附上如下内容:

launch.json 代码清单:

{"window.zoomLevel": 1,"launch": {"configurations": [{"name": "${workspace}/main.py", 	#调试列表里显示的名字,随意,建议写当前调试的文件名"type": "python",					#语言类型,默认是 Python"request": "launch",				#应答类型, 默认即可"python": "/Library/Frameworks/Python.framework/Versions/3.9/bin/python3",	#Python 可执行文件所在的位置"args": ["-d", "db_ecommerce", "-t", "ads_trade_stats"],								#执行脚本的附加参数,默认生成是没有的"program": "${file}",				#变量,自动取当前光标所在的文件"console": "integratedTerminal",	#显示控制台,默认用 VScode 自带的,也可以用系统的"justMyCode": true, 				#true 只调试当前 py 文件,默认值; false 也调试引用的模块"env": {"PYTHONPATH": "/Library/Frameworks/Python.framework/Versions/3.9/lib/"}	#Python环境变量}]}
}

操作完毕后,通过如下方式运行该Python 脚本文件:

①、VSCode右上角点击“运行”图标
选择:

  • 在专用终端中运行 Python 文件
  • 调试 Python 文件
    在这里插入图片描述
    ②、在菜单“运行”选项中操作
    选择:
  • 启动调试
  • 以非调试模式运行
    在这里插入图片描述
    这 2 种方式,均没有获取到传入的参数,测试以失败告终。

经测试,将 launch.json更名为启动.json,同样失败。

尝试方案2(Test Succ):

选择菜单“运行” --> “添加配置”:
在这里插入图片描述
选择之后,在新生成的 settings.json 文件的生成模板中却不到 Python 相关的配置选项,没关系, 将上述 launch.json 中的文本内容,复制到这里即可。

通过这种方式生成的 settings.json 文件在我 PC 上的位置为:
/Users/xxxx/Library/Application Support/Code/User/settings.json

在这里插入图片描述

settings.json 代码清单:

{"window.zoomLevel": 1,"launch": {"configurations": [{"name": "${workspace}/main.py","type": "python","request": "launch","python": "/Library/Frameworks/Python.framework/Versions/3.9/bin/python3","args": ["-d", "db_ecommerce", "-t", "ads_trade_stats"],"program": "${file}","console": "integratedTerminal","env": {"PYTHONPATH": "/Library/Frameworks/Python.framework/Versions/3.9/lib/"}}]}
}

配置后,记得保存。

之后再次按照如下这种方式运行该 Python 脚本,即可正确获取到请求入参。

  • “尝试方案1(Test Fail)”–> “②、在菜单“运行”选项中操作”

注意:
经测试,如下方式不会引用到settings.json脚本中配置的python 请求入参配置参数(即 “args” 中内容)。

  • “尝试方案1(Test Fail)”–> “①、VSCode右上角点击“运行”图标”

调试时的打印语句,也正常输出了:

# xxxx @ XXXXdeMacBook-Pro in ~/bin [11:28:39] 
$  cd /Users/xxxx/bin ; /usr/bin/env /Library/Frameworks/Python.framework/Versions/3.9/bin/python3 /Users/xxxx/.vscode/extensions/ms-python.python-2023.20.0/pythonFiles/lib/python/debugpy/adapter/../../debugpy/launcher 59555 -- /Users/xxxx/bin/test_pass_params.py -d db_ecommerce -t ads_trade_stats 
>>>>target_database = db_ecommerce, target_table = ads_trade_stats
>>>> <mysql.connector.connection.MySQLConnection object at 0x10489f250>
>>>>fetchall = [('dt', 'date'), ('recent_days', 'bigint'), ('order_total_amount', 'decimal'), ('order_count', 'bigint'), ('order_user_count', 'bigint'), ('order_refund_count', 'bigint'), ('order_refund_user_count', 'bigint')]
>>>>list(iterator) =  ['dt', 'recent_days', 'order_total_amount', 'order_count', 'order_user_count', 'order_refund_count', 'order_refund_user_count']

一些注意事项:

  1. setting.json中“args”请求参数如果这样配置:
"args": ["-d db_ecommerce", "-t ads_trade_stats"]

在运行时,也可以获取到参数,不过每一个参数前都会添加一个空格,如“ db_ecommerce”、“ ads_trade_stats”.
故推荐“args”中的 k、v 都使用"" 进行包裹,详见setting.json全局配置脚本中的配置。


参考文献:

  • Python debugging in VS Code

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/257098.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SuperMap iObject.NET三维场景拖拽框选实现详解及完整源代码(一)——环境准备及项目配置

作者&#xff1a;超图研究院技术支持中心-于丁1 SuperMap iObject.NET三维场景拖拽框选实现详解及完整源代码&#xff08;一&#xff09;——环境准备及项目配置   三维场景框选是一种在三维空间中进行选择和操作的功能&#xff0c;它可以让使用者通过鼠标拖动来创建一个矩形…

【数据结构】C语言结构体详解

目录 前言 一、结构体的定义 二、定义结构体变量 三、结构体变量的初始化 四、使用typedef声明新数据类型名 五、指向结构体变量的指针 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1…

程序管理与SELinux初探-理论篇

工作管理概念&#xff08;job control&#xff09; 1前台&#xff1a;你可以控制与执行命令的这个环境称为前台 2后台&#xff1a;可以自行运行的工作&#xff0c;你无法ctrlc终止它&#xff0c;可以使用bg/fg调用该工作 3后台中执行的进程不能等待terminal/shell的输入 sui…

2.1 网络编程-多用户通信系统(用户登录、拉取在线用户、无异常退出)

文章目录 一、多用户通信系统1.1 介绍1.2 公共类1.2.1 封装消息类1.2.2 用户类1.2.3 消息类型类1.2.4 控制台读取内容 二、用户登录2.1 客户端2.1.1 菜单界面 QQView2.1.2 验证用户UserClientService2.1.3 线程类 ClientConnectServerThread2.1.4 线程集合类 2.2 服务端2.2.1 服…

Windows 10安装FFmpeg详细教程

Windows 10安装FFmpeg详细教程 0. 背景 在搭建之前的项目环境时&#xff0c;需要安装ffmpeg&#xff0c;在此记录下过程 1. 官网下载 点击进入官网&#xff1a;ffmpeg&#xff0c;官网地址&#xff1a;https://ffmpeg.org/download.html 如图所示&#xff0c;点击Windows图标…

新书推荐——《Copilot和ChatGPT编程体验:挑战24个正则表达式难题》

《Copilot和ChatGPT编程体验&#xff1a;挑战24个正则表达式难题》呈现了两方竞争的格局。一方是专业程序员David Q. Mertz&#xff0c;是网络上最受欢迎的正则表达式教程的作者。另一方则是强大的AI编程工具OpenAI ChatGPT和GitHub Copilot。 比赛规则如下&#xff1a;David编…

Centos7部署Graylog5.2日志系统

Graylog5.2部署 Graylog 5.2适配MongoDB 5.x~6.x&#xff0c;MongoDB5.0要求CPU支持AVX指令集。 主机说明localhost部署Graylog&#xff0c;需要安装mongodb-org-6.0、 Elasticsearch7.10.2 参考&#xff1a; https://blog.csdn.net/qixiaolinlin/article/details/129966703 …

【链表Linked List】力扣-117 填充每个节点的下一个右侧节点指针II

目录 问题描述 解题过程 官方题解 问题描述 给定一个二叉树&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 N…

基于springboot实现的仿天猫商城项目

一、系统架构 前端&#xff1a;jsp | js | css | jquery 后端&#xff1a;springboot | mybatis-plus 环境&#xff1a;jdk1.7 | mysql | maven 二、代码及数据库 三、功能介绍 01. web端-首页 02. web端-商品查询 03. web端-商品详情 04. web端-购物车 05. web端-订单…

PostgreSQL 技术内幕(十二) CloudberryDB 并行化查询之路

随着数据驱动的应用日益增多&#xff0c;数据查询和分析的量级和时效性要求也在不断提升&#xff0c;对数据库的查询性能提出了更高的要求。为了满足这一需求&#xff0c;数据库引擎不断经历创新&#xff0c;其中并行执行引擎是性能提升的重要手段之一&#xff0c;逐渐成为数据…

Python实现高频关键词筛选与共现次数计算

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是彭涛&#xff0c;今天为大家分享 Python实现高频关键词筛选与共现次数计算&#xff0c;全文3300字&#xff0c;阅读大约10分钟。 在文本分析和自然语言处理中&#xff0c;关键词的提取和关键词共现分析是常…

Java (JDK 21) 调用 OpenCV (4.8.0)

Java 调用 OpenCV 一.OpenCV 下载和安装二.创建 Java Maven 项目三.其他测试 一.OpenCV 下载和安装 Open CV 官网 可以下载编译好的包&#xff0c;也可以下载源码自行编译 双击安装 opencv-4.8.0-windows.exe 默认为当前目录 安装即解压缩 根据系统位数选择 将 x64 目录下 op…