在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.pswp.cn/news/211949.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211949.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211949.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sentinel整合nacos配置中心持久化

在網上找了很多的資料&#xff0c;發現sentinel整合nacos持久化的博文和視頻大多數都只有改造限流部分的教程&#xff0c;并且都需要修改前端&#xff0c;略顯麻煩&#xff0c;至于剩下的熔斷、熱點流控、授權的更是沒有相關的改造教程&#xff0c;最后在知乎的看到一篇文章后讓…

百科詞條可以刪除嗎?如何刪除自己的百度百科?

近日&#xff0c;小馬識途營銷顧問接到不少客戶刪除自己百科詞條的咨詢&#xff0c;有不少人自己并沒有去建立百科詞條&#xff0c;但是網上已經有了&#xff0c;有的信息不正確&#xff0c;甚至有的信息是負能量的&#xff0c;對當事人自己造成一定的困擾&#xff0c;所以尋求…

pytorch學習4-簡易卷積實現

系列文章目錄 pytorch學習1-數據加載以及Tensorboard可視化工具pytorch學習2-Transforms主要方法使用pytorch學習3-torchvisin和Dataloader的使用pytorch學習4-簡易卷積實現pytorch學習5-最大池化層的使用pytorch學習6-非線性變換&#xff08;ReLU和sigmoid&#xff09;pytorc…

【鴻蒙學習網絡】

鴻蒙技術學習相關學習資料 官方文檔&#xff1a;華為官方提供了鴻蒙開發者文檔&#xff0c;包括開發指南、API參考和示例代碼等。您可以訪問華為開發者中心網站&#xff08;https://developer.harmonyos.com/&#xff09;獲取最新的官方文檔和教程。在 線 課 程 &#xff1a; …

PbootCMS 前臺RCE漏洞復現

0x01 產品簡介 PbootCMS是全新內核且永久開源免費的PHP企業網站開發建設管理系統,是一套高效、簡潔、 強悍的可免費商用的PHP CMS源碼,能夠滿足各類企業網站開發建設的需要 0x02 漏洞概述 PbootCMS v<=3.1.6版本中存在模板注入,攻擊者可構造特定的鏈接利用該漏洞,執行…

線程及實現方式

一、線程 線程是一個基本的CPU執行單元&#xff0c;也是程序執行流的最小單位。引入線程之后&#xff0c;不僅是進程之間可以并發&#xff0c;進程內的各線程之間也可以并發&#xff0c;從而進一步提升了系統的并發度&#xff0c;使得一個進程內也可以并發處理各種任務&#x…

c語言的內存函數

memcpy函數 1.調用形式void*memcpy(void*p1,void*p2,int n)&#xff0c;表示從第二個位置復制n個字節到第一個位置&#xff0c;而指針類型為void的原因是他可以復制整型字符型甚至指針結構體類型的數據 2.在遇到\0的時候不會停下來&#xff0c;因為函數執行拷貝靠字節數&…

【Hive】——安裝部署

1 MetaData&#xff08;元數據&#xff09; 2 MetaStore &#xff08;元數據服務&#xff09; 3 MetaStore配置方式 3.1 內嵌模式 3.2 本地模式 3.3 遠程模式 4 安裝前準備 <!-- 整合hive --><property><name>hadoop.proxyuser.root.hosts</name><v…

Java+Swing: 主界面組件布局 整理9

說明&#xff1a;這篇博客是在上一篇的基礎上的&#xff0c;因為上一篇已經將界面的框架搭好了&#xff0c;這篇主要是將里面的組件完善。 分為三個部分&#xff0c;北邊的組件、中間的組件、南邊的組件 // 放置北邊的組件layoutNorth(contentPane);// 放置中間的 Jtablelayou…

Tair(3):Tair入門demo

新建一個maven項目 1 導入依賴 <dependency><groupId>com.taobao.tair</groupId><artifactId>tair-client</artifactId><version>2.3.5</version></dependency><dependency><groupId>com.alibaba</groupId>…

計算日期到天數轉換

根據輸入的日期&#xff0c;計算是這一年的第幾天。 保證年份為4位數且日期合法。 輸入描述&#xff1a;輸入一行&#xff0c;空格分割&#xff0c;分別是年&#xff0c;月&#xff0c;日 輸出描述&#xff1a;輸出是這一年的第幾天 輸入&#xff1a;2012 12 31 輸出&#xff…

Python計時器

制作一個簡單的Python計時器 在本教程中&#xff0c;我們將學習如何使用Python制作一個基礎的計時器。這個計時器將能夠開始計時、暫停、繼續和重置時間。 設計思路 為了建立一個計時器&#xff0c;我們需要定義一個能夠跟蹤時間的變量&#xff0c;并且定期更新顯示的時間。…

Linux權限(用戶角色+文件權限屬性)

Linux權限 文章目錄 Linux權限一.文件權限1.快速掌握修改權限的方法&#xff08;修改文件權限屬性&#xff09;2.對比權限的有無&#xff0c;以及具體的體現3.修改權限的第二套方法&#xff08;修改用戶角色&#xff09;4.文件類型&#xff08;Linux下一切皆文件&#xff09; 二…

049:VUE 引入jquery的方法和配置

第049個 查看專欄目錄: VUE ------ element UI 專欄目標 在vue和element UI聯合技術棧的操控下&#xff0c;本專欄提供行之有效的源代碼示例和信息點介紹&#xff0c;做到靈活運用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安裝、引用&#xff0c;模板使…

springboot基礎(80):redis geospatial的應用

文章目錄 前言redis geospatial如何從地圖上獲取經緯度springboot 的相關方法調用準備redis服務器引用的依賴預設位置的keyGEOADD 添加位置GEORADIUS 獲取指定經緯度附件的停車場&#xff08;deprecated&#xff09;GEORADIUS 獲取指定成員附件的停車場&#xff08;deprecated&…

文心一言API(高級版)使用

文心一言API高級版使用 一、百度文心一言API(高級版)二、使用步驟1、接口2、請求參數3、請求參數示例4、接口 返回示例 三、 如何獲取appKey和uid1、申請appKey:2、獲取appKey和uid 四、重要說明 一、百度文心一言API(高級版) 基于百度文心一言語言大模型的智能文本對話AI機器…

歸并排序--分治法

代碼 #include<iostream> using namespace std;void merge(int arr[], int p, int q, int r, int temp[]) {int i p;int j q 1;int k 0;while (i < q && j < r){if (arr[i] < arr[j]){temp[k] arr[i];}else{temp[k] arr[j];}}while (i < q){t…

智能優化算法應用:基于蟻獅算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于蟻獅算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于蟻獅算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.蟻獅算法4.實驗參數設定5.算法結果6.參考文獻7.MA…

ptmalloc:從內存虛擬化說起

前言 本文并不局限于ptmalloc的原理&#xff0c;而是從linux的內存虛擬化和系統調用原理出發&#xff0c;結合各種語言實現&#xff0c;講明內存分配方面的trade off&#xff0c;力圖事無巨細&#xff0c;追根究底。本文內容包括但不限于&#xff1a;NIO原理、0拷貝原理、內存…

Redis 數據的持久化 RDB、AOF、RDB + AOF、No persistence 各自優缺點

文章目錄 一、RDB (Redis Database)1.1 RDB 優勢1.2 RDB 缺點1.3 RDB 如何工作1.4 RDB配置1.5 開啟/關閉&#xff0c;RDB快照策略&#xff0c;save指令1.6 持久化硬盤文件&#xff0c;dbfilename指令1.7 持久化硬盤文件的存儲地址&#xff0c;dir指令 二、AOF (Append Only Fil…