在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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ARM Trace32(劳特巴赫) 使用介绍 11 -- Trace32 ARMv8/v9 系统寄存器读写】

文章目录 Trace32 ARMv8/v9 系统寄存器读写 Trace32 ARMv8/v9 系统寄存器读写 本文主要介绍如何使用trace32 来对 ARMv8 的系统寄存器及debug 寄存器进行配置&#xff0c;具体配置方法如下&#xff1a; 步骤1&#xff1a; 步骤2&#xff1a; 步骤3&#xff1a; 步骤4&#xf…

商务与经济统计案例分析:3-1Pelican 商店——python 实现

商务与经济统计案例分析:3-1Pelican 商店 要求Python实现 要求 1.净销售额的描述统计量和各种不同类型顾客的净销售额的描述统计量。 2.关于年龄与净销售额之间关系的描述统计量。 Python实现 0.相关分析&#xff1a;2-1案例 1.净销售额的描述统计量和各种不同类型顾客的净销…

【Docker二】docker网络模式、网络通信、数据管理

目录 一、docker网络模式&#xff1a; 1、概述 2、docker网络实现原理&#xff1a; 3、docker的网络模式&#xff1a; 3.1、bridge模式&#xff1a; 3.2、host模式&#xff1a; 3.3、container模式&#xff1a; 3.4、none模式&#xff1a; 3.5、自定义网络模式&#xf…

stateflow——如何查看状态机中参数变化及状态机断点调试

法一&#xff1a;使用Data Inspector 点击“符号图窗”和“属性”&#xff0c;如图&#xff1b;在选择变量n并右键点击inspector&#xff0c;最后在logging&#xff0c;如图 法二&#xff1a;log active state 和法一类似使用data inspector查看&#xff0c;类似的查看方法和…

《机器学习实战》MNIST 数据集的导入方法

1、在网上下载数据集 mnister 数据集有两个类型&#xff0c; &#xff08;1&#xff09;一个是手写的阿拉伯数字图片&#xff1a;MNIST 下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1dd-I-laysPbT8wxbyvxTvg 提取码&#xff1a;1234 &#xff08;2…

【Flink系列五】Checkpoint及Barrier原理

本章内容 一致性检查点从检查点恢复状态检查点实现算法-barrier保存点Savepoint状态后端&#xff08;state backend&#xff09; 本文先设置一个前提&#xff0c;流处理的数据都是可回放的&#xff08;可以理解成消费的kafka的数据&#xff09; 一致性检查点&#xff08;che…

基于ssm少儿编程管理系统源码和论文

idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 环境&#xff1a; jdk8 tomcat8.5 开发技术 ssm 基于ssm少儿编程管理系统源码和论文744 摘要 网络的广泛应用给生活带来了十分的便利。所以把少儿编程管理系统与现在网络相结合&#xff0c;利用java技术建设…

安装python第三方库后,在pycharm中不能正常导入

python小白学习opencv&#xff0c;使用pip安装完opencv库后import cv2报错&#xff0c;按照如下设置解决&#xff1a; 需要正确设置python解释器路径

VC++使用GetProcessTimes获取进程创建时间、销毁时间、用户态时间、内核态时间

一、GetProcessTimes函数简介&#xff08;微软MSDN&#xff09; 微软提供了一个非常有用的API函数GetProcessTimes用来获取进程创建时间、销毁时间、用户态时间、内核态时间&#xff0c;msdn连接为&#xff1a;GetProcessTimes 函数 (processthreadsapi.h) 其函数原型为&#…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux文件管理(3)》(27)

《Linux操作系统原理分析之Linux文件管理&#xff08;3&#xff09;》&#xff08;27&#xff09; 8 Linux文件管理8.6 文件管理和操作8.6.1 系统对文件的管理8.6.2 进程对文件的管理 8 Linux文件管理 8.6 文件管理和操作 8.6.1 系统对文件的管理 Linux 系统把所有打开的活动…

智能优化算法应用:基于北方苍鹰算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于北方苍鹰算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于北方苍鹰算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.北方苍鹰算法4.实验参数设定5.算法结果6.参考…

12.07

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口设置//去掉表头this->setWindowFlags(Qt::FramelessWindowHint);//重新设置大小this->resize(800,420);//设置背景颜色this->setStyleSheet("background-color:whi…

mfc140.dll丢失的解决方法,以及解决方法的优缺点

如果你在使用电脑时遇到了“mfc140.dll丢失”的错误提示&#xff0c;这可能会阻止你运行特定的应用程序或游戏。这篇文章将向你介绍导致此错误出现的原因以及mfc140.dll丢失的解决方法&#xff0c;让你的电脑系统恢复正常运行。 一.mfc140.dll丢失的解决方法以及优缺点 方法 1…

Hadoop3.x完全分布式环境搭建Zookeeper和Hbase

先在主节点上进行安装和配置&#xff0c;随后分发到各个从节点上。 1. 安装zookeeper 1.1 解压zookeeper并添加环境变量 1&#xff09;解压zookeeper到/usr/local文件夹下 tar -zxvf /usr/local2&#xff09;进入/usr/local文件夹将apache-zookeeper-3.8.0-bin改名为zookeep…

【Linux】进程通信之命名管道mkfifo

1.认识命名管道 匿名管道应用的一个限制就是只能在具有共同祖先&#xff08;具有亲缘关系&#xff09;的进程间通信。如果我们想在不相关的进程之间交换数据&#xff0c;可以使用FIFO文件来做这项工作&#xff0c;它经常被称为命名管道。命名管道是一种特殊类型的文件 2.在命…

学会使用这个魔法棒,再也不用在容器里安装乱七八糟的命令工具了!

在构建镜像的时候&#xff0c;我总是倾向于极简构建&#xff0c;一切没有必要的软件包都不安装&#xff0c;以此来缩小镜像的容量。但是这种做法为后续运维带来了一些困难&#xff0c;如在日常查询、排查问题的时候发现很多命令用不了&#xff0c;不得不在容器中安装额外的命令…

配置BFD状态与接口状态联动示例

BFD简介 定义 双向转发检测BFD&#xff08;Bidirectional Forwarding Detection&#xff09;是一种全网统一的检测机制&#xff0c;用于快速检测、监控网络中链路或者IP路由的转发连通状况。 目的 为了减小设备故障对业务的影响&#xff0c;提高网络的可靠性&#xff0c;网…

git 本地有改动,远程也有改动,且文件是自动生成的配置文件

在改动过的地方 文件是.lock文件&#xff0c;自动生成的。想切到远程的分支&#xff0c;但是远程的分支也有改动过。这时候就要解决冲突&#xff0c;因为这是两个分支&#xff0c;代码都是不一样的&#xff0c;要先把这改动的代码提交在本地或者提交在本分支的远程才可以切到其…

用keepalived做mysql高可用

两台机器(centos7系统)安装mysql [rootmysql-keep-master ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm [rootmysql-keep-master ~]# rpm -ivh mysql80-community-release-el7-3.noarch.rpm [rootmysql-keep-master ~]# yum -y install yu…

深入探索C语言中的二叉树:数据结构之旅

引言 在计算机科学领域&#xff0c;数据结构是基础中的基础。在众多数据结构中&#xff0c;二叉树因其在各种操作中的高效性而脱颖而出。二叉树是一种特殊的树形结构&#xff0c;每个节点最多有两个子节点&#xff1a;左子节点和右子节点。这种结构使得搜索、插入、删除等操作…