0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何讓Python程序參數(shù)輸入更像Linux命令

自然語言處理愛好者 ? 來源:自然語言處理愛好者 ? 作者:菊子皮 ? 2020-12-28 14:22 ? 次閱讀

背景

最近一直訓(xùn)練模型,進(jìn)行模型調(diào)參比較,但是隨著模型參數(shù)多起來了,想獲得不同參數(shù)模型結(jié)果也越來越麻煩??纯辞拜呉约癵ithub上開源項目的代碼后,感覺這個感覺學(xué)到了很多。讓你的python程序輸入?yún)?shù)更像Linux那樣輸入,之前使用sys.argv,看到這個之后感覺太low了。這個就是 Python 標(biāo)準(zhǔn)庫的一部分:Argparse[1]。那么下面讓我們看看他是多么方便。

1 入門操作

由于這個包是Python標(biāo)準(zhǔn)庫中的一部分,所以就不用安裝了,直接使用即可。下面結(jié)合文章argparse基本用法[2]和自己的理解書寫如下程序:

pIYBAF_ped-AEWh1AABVgwZNyw0775.jpg

運行方式:linux系統(tǒng)使用比較多的還是命令,這里我也在終端里運行程序,如下是使用默認(rèn)參數(shù)運行:

01c0a8a6-4693-11eb-8b86-12bb97331649.png

無參數(shù)運行

有參運行如下:

01ecac30-4693-11eb-8b86-12bb97331649.png

有參運行

看起來是不是挺有意思的。在上面的代碼中,使用argparse.ArgumentParser構(gòu)建一個參數(shù)解析器,其實也就是創(chuàng)建一個相關(guān)對象,description描述了這個解析器,在命令行中使用-h(--help)命令就可以看到,如下:

022a0364-4693-11eb-8b86-12bb97331649.png

幫助文檔

是不是很清晰。

使用這個參數(shù)解析器得有一些我們需要的參數(shù),那么就使用parser.add_argument()方法去定義一些。上面的例子就是增加了兩個參數(shù):name, job。其中'-n'、'--name'都表示一個參數(shù),而default是運行程序時不輸入對應(yīng)參數(shù)值所啟用的值。現(xiàn)在相信你對這個有一定的了解了。下面我們再深入一下。

2 挖掘argparse更多功能

當(dāng)然,上面的內(nèi)容能夠應(yīng)付日常中一些任務(wù)。了解更多的內(nèi)容,也會讓我們事半功倍。下面的內(nèi)容參考了argparse簡要用法總結(jié)[3]部分內(nèi)容,特此感謝。主要介紹parser.add_argument()中的其他參數(shù),default就不再介紹了。

2.1 required:表示這個參數(shù)是否一定需要設(shè)置

如果設(shè)置了required=True,則在實際運行的時候不設(shè)置該參數(shù)將報錯,在上面的程序上添加如下代碼:

pIYBAF_pefKASLszAAANl8Zh6lU452.jpg

當(dāng)不輸入值時,則有:

02ad7dd4-4693-11eb-8b86-12bb97331649.png

必要參數(shù)

2.2 type: 參數(shù)類型

命令參數(shù)是傳給其他功能模型使用,不同的功能模型則需要不同類型的數(shù)據(jù)輸入,可以通過設(shè)置type直接將輸入的數(shù)據(jù)轉(zhuǎn)換成對應(yīng)類型的數(shù)據(jù)(前提輸入的數(shù)據(jù)格式就滿足轉(zhuǎn)換要求),修改need參數(shù)的代碼如下:

pIYBAF_pegSAJLLWAAAPsdueYo4869.jpg

運行查看:

02d5282a-4693-11eb-8b86-12bb97331649.png

指定參數(shù)類型

2.3 choices:參數(shù)值只能從幾個選項里面選擇

有時為了更加人性化提示用戶使用,可以提升用戶輸入哪些值,慢慢地感覺到了Linux的味道了?,F(xiàn)在我們修改need參數(shù)的代碼如下:

pIYBAF_pehWAT7mCAAAVEW6XWcU234.jpg

使用-h命令查看修改后的樣子:

02feb8c0-4693-11eb-8b86-12bb97331649.png

幫助命令

可以看到,need參數(shù)的選擇項。具體效果,朋友們可以自行試試,這里不費篇幅展示了,以下是輸入選擇范圍外的結(jié)果。

0353e5a2-4693-11eb-8b86-12bb97331649.png

選擇范圍外結(jié)果

2.4 dest:修改程序內(nèi)部獲取值方法

在命令行中輸入的命令是-ne等形式把參數(shù)傳入到程序,程序可通過其他屬性獲取對應(yīng)參數(shù)值,就是dest,修改need參數(shù)如下:

o4YBAF_peimAMe9WAAAYOARjIWo842.jpg

運行:

039cc11e-4693-11eb-8b86-12bb97331649.png

獲取真實值

上面還修改打印語句為:

3 總結(jié)

argparse是一個全面的參數(shù)處理庫,功能比較強(qiáng)大,內(nèi)容也比較多,暫時就介紹這么多吧。更多實際需要的功能,我們就根據(jù)需要查看官方文檔以及網(wǎng)上的其他資料吧。

參考資料

[1]Argparse: https://docs.python.org/zh-cn/3.7/howto/argparse.html

[2]argparse基本用法: https://blog.csdn.net/yy_diego/article/details/82851661

[3]argparse簡要用法總結(jié): http://vra.github.io/2017/12/02/argparse-usage/

責(zé)任編輯:xj

原文標(biāo)題:讓Python程序參數(shù)輸入更像Linux命令——argparse

文章出處:【微信公眾號:自然語言處理愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207920
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84081

原文標(biāo)題:讓Python程序參數(shù)輸入更像Linux命令——argparse

文章出處:【微信號:NLP_lover,微信公眾號:自然語言處理愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    util-linux修復(fù)WallEscape漏洞,影響Linux系統(tǒng)wall命令使用

    WallEscape 主要影響“wall”命令操作,Linux 系統(tǒng)中的常規(guī)下,該指令被用作向系統(tǒng)所有登錄用戶的終端發(fā)布消息。然而在處理命令參數(shù)
    的頭像 發(fā)表于 03-29 14:35 ?832次閱讀

    如何使用linux下gdb來調(diào)試python程序

    中,我們將介紹如何在Linux中使用GDB來調(diào)試Python程序。 一、安裝GDB和Python調(diào)試符號 在使用GDB調(diào)試Python
    的頭像 發(fā)表于 01-31 10:41 ?1965次閱讀

    常用Linux命令總結(jié)

    今天浩道跟大家分享一些平時運維工作中常用到的Linux命令,你關(guān)鍵時候也可以在領(lǐng)導(dǎo)面前露一手!大家不要覺得命令使用簡單,實際上浩道接觸的現(xiàn)場同事,
    的頭像 發(fā)表于 12-26 09:49 ?339次閱讀

    idea如何輸入命令參數(shù)

    在許多軟件開發(fā)和系統(tǒng)管理的任務(wù)中,我們經(jīng)常需要向應(yīng)用程序傳遞命令參數(shù)。命令參數(shù)是在運行時傳遞給程序
    的頭像 發(fā)表于 12-06 15:01 ?824次閱讀

    Python程序不自動關(guān)閉的方法

    有時候,我們希望Python程序在完成了任務(wù)后不立即自動關(guān)閉,而是保持運行狀態(tài),以便進(jìn)行進(jìn)一步的操作或觀察程序的輸出。在本文中,我們將探討幾種方法來實現(xiàn)這一目標(biāo)。 使用input函數(shù) 最簡單的方法
    的頭像 發(fā)表于 11-29 15:10 ?4317次閱讀

    python調(diào)用windows命令

    Python是一種強(qiáng)大的編程語言,可以用于開發(fā)各種不同類型的應(yīng)用程序。其中一個常見的用途是使用Python調(diào)用Windows命令來執(zhí)行特定的任務(wù)。在本文中,我們將詳細(xì)討論如何使用
    的頭像 發(fā)表于 11-29 14:34 ?828次閱讀

    運行Python程序的幾種常見方法

    方法: 使用Python解釋器 Python解釋器是運行Python程序的基本工具。在命令行中輸入
    的頭像 發(fā)表于 11-28 15:32 ?1934次閱讀

    python的run在哪

    常見方式。 命令行運行 命令行是最基本也是最常見的運行Python程序的方式之一。在終端或命令提示符中
    的頭像 發(fā)表于 11-24 09:27 ?1709次閱讀

    Python自帶的命令窗口

    Python自帶的命令窗口,也稱為Python交互式解釋器,是Python編程語言的一個重要工具,它允許用戶在命令行界面中
    的頭像 發(fā)表于 11-22 14:02 ?710次閱讀

    linux命令行運行步驟

    運行Linux命令行涉及以下步驟: 打開終端 在Linux系統(tǒng)中,打開命令行界面的方式有多種,最常見的是打開終端應(yīng)用程序??梢栽趹?yīng)用
    的頭像 發(fā)表于 11-17 10:18 ?631次閱讀

    linux重啟命令有哪些

    Linux是一種自由和開放源代碼的操作系統(tǒng),被廣泛應(yīng)用于服務(wù)器和嵌入式設(shè)備。在Linux中,有多種命令用于重啟系統(tǒng)。在本文中,我們將詳細(xì)介紹常用的Linux重啟
    的頭像 發(fā)表于 11-17 09:49 ?1831次閱讀

    linux常用命令及作用

    Linux系統(tǒng)中,有許多常用的命令,它們可以用于管理文件、目錄、進(jìn)程等。以下是一些常用的命令及它們的作用: ls命令:列出當(dāng)前目錄下的所有文件和子目錄。使用ls
    的頭像 發(fā)表于 11-13 16:45 ?701次閱讀

    linux中more命令的用法

    , options 是可選參數(shù),可以用來定制 more 命令的行為,而 file 是要顯示的文件名。如果不指定 file 參數(shù),則 more 命令會從標(biāo)準(zhǔn)
    的頭像 發(fā)表于 11-08 14:19 ?842次閱讀

    linux命令和shell編程有什么聯(lián)系

    Linux命令和Shell編程之間存在密切的聯(lián)系。 首先,Shell是Linux命令行下的解釋器,它提供了一個用戶界面,使用戶能夠與Linux
    的頭像 發(fā)表于 11-08 10:53 ?771次閱讀

    shell命令linux命令一樣嗎

    Shell命令Linux命令并不完全一樣。 首先,Shell是一種命令行解釋器,它是用來解釋和執(zhí)行用戶輸入
    的頭像 發(fā)表于 11-08 10:51 ?2442次閱讀