最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文搞懂關(guān)于?sys.argv?的詳解

 更新時間:2023年01月15日 11:41:51   作者:不渴望力量的哈  
sys.argv?其實就是一個列表,里邊需要用戶傳入的參數(shù),關(guān)鍵就是要明白這參數(shù)是從程序外部輸入的,而非代碼本身的什么地方,要想看到它的效果就應(yīng)該將程序保存了,從外部來運行程序并給出參數(shù),通過本文學(xué)習(xí)你將明白?sys.argv很多知識,感興趣的朋友一起看看吧

詳解 sys.argv

關(guān)于 sys.argv 可得好好說道說道了。當(dāng)初我可是被折磨的不要不要的,上一章節(jié)我們提到 argv 是獲取程序外部的參數(shù),返回值是一個列表。

說實話我一直在 python 解釋器、idea 運行,試圖從結(jié)果發(fā)現(xiàn)它的用途,然而結(jié)果一直都是沒結(jié)果,也在網(wǎng)上查了許多資料,大部分都是轉(zhuǎn)裁和復(fù)制的。給的都是簡明python教程上那個一長串代碼的例子,說看了就明白了,可我看得暈頭轉(zhuǎn)向的還是沒真正明白,只知道 sys.argv[0] 表示當(dāng)前腳本本身文件路徑的該腳本文件。后來經(jīng)過大量努力,多方求教才真正明悟了,謹(jǐn)以記錄和分享,希望能從另一個角度給同在求索過程中的同學(xué)一點啟發(fā)。

sys.argv 其實就是一個從程序外部獲取參數(shù) 的橋梁,這里所說的 外部 很關(guān)鍵,所以那些試圖從代碼來說明它作用的解釋一直沒看明白。因為我們需要先在終端執(zhí)行腳本, 并從外部傳入?yún)?shù)(可以是多個),所以獲得的是一個列表(list),也就是說sys.argv其實可以看作是一個列表,所以才能用[ ]提取其中的元素。其第一個元素是程序本身,隨后才依次是外部傳入的參數(shù)。

我們先來看一下 sys.argv 返回的是什么?

import sys
print(sys.argv)

# >>> 執(zhí)行結(jié)果如下:
# >>> ['/Users/username/PycharmProjects/XXXXX/XXXXX/animal/package_sys.py']
# >>> 從執(zhí)行結(jié)果可以看出 其輸出的就是當(dāng)前路徑下的當(dāng)前腳本本身,也就可以理解為 'sys.argv' 其實就是運行自身的腳本文件 
# >>> 我們從 '外部' 運行該腳本文件的時候,需要傳入?yún)?shù)(可以是多個)

接下來我們將上面的代碼改為如下:

import sys
print(sys.argv[0], sys.argv[1])
# >>> 接下來我們進(jìn)入 Terminal 終端 利用 python 執(zhí)行 該腳本文件,并傳入 測試參數(shù),結(jié)果如下圖。

為了更好的 演示 sys.argv 屬性,我們將 sys 常用的函數(shù)與屬性進(jìn)行一下條件判斷。示例如下:

import sys
command = sys.argv[1]
if command == 'modules':
    modules = sys.modules
    print(modules)
elif command == 'path':
    path = sys.path
    print(path)
elif command == 'encoding':
    code = sys.getdefaultencoding()
    print(code)
elif command == 'platform':
    print(sys.platform)
elif command == 'version':
    print(sys.version)
else:
    print('該命令未識別')

然后在 Terminal 終端 執(zhí)行該腳本,如下圖:

看到這里 ,應(yīng)該明白了吧?sys.argv 其實就是一個列表,里邊需要用戶傳入的參數(shù),關(guān)鍵就是要明白這參數(shù)是從程序外部輸入的,而非代碼本身的什么地方,要想看到它的效果就應(yīng)該將程序保存了,從外部來運行程序并給出參數(shù)。

ps:sys.argv[]的用法

一、介紹

1、sys.argv 是獲取運行python文件的時候命令行參數(shù),且以list形式存儲參數(shù)

2、sys.argv[0]表示代碼本身文件路徑

下面我們通過一個極簡單的test.py程序的運行結(jié)果來說明它的用法

import sys
a=sys.argv[0]
print(a)

將test.py保存在c盤的根目錄下。

在程序中找到 ‘運行’->點擊->輸入"cmd"->回車鍵   進(jìn)入控制臺命令窗口(如下圖),先輸入cd c:\   (作用是將命令路徑改到c盤根目錄),然后輸入test.py運行我們剛剛寫的程序:

這就是0指代碼(即此.py程序)本身的意思。輸出的就是test.py。

如果輸入的是python c:\test.py,輸出就是c:\test.py

然后我們將代碼中0改為1 :

a=sys.argv[1]

保存后,再從控制臺窗口運行,這次我們加上一個參數(shù),輸入:test.py what

 得到的結(jié)果就是我們輸入的參數(shù)what

二、簡單的例子

#輸入
$ python ./test.py aa bb cc
import sys
def main(argv): 
    print(argv[0])                  aa      
    print(argv[1])                  bb
    print(argv[1:])                 ['bb', 'cc']
    print(argv[1][1:])              b
  
    print('sys.argv[0]:',sys.argv[0])        #test1.py
    print('sys.argv[1]:',sys.argv[1])        #aa
    print('sys.argv[1:]:',sys.argv[1:])     #['aa', 'bb', 'cc']
  
    print('sys.argv:',sys.argv)                 #['test1.py', 'aa', 'bb', 'cc']
    print('type(sys.argv):',type(sys.argv))     #<class 'list'>
    print('len(sys.argv):',len(sys.argv))       #4 
 
    return 0  
  
if __name__ == '__main__':  
    sys.exit(main(sys.argv[1:]))  #sys.exit(0)正常退出, sys.exit(1)非正常退出

從上面輸出結(jié)果可以看出,

sys.argv[0]是當(dāng)前所執(zhí)行的腳本,并且輸入什么就是什么,輸入test.py就是test.py,輸入./test.py就是./test.py

index 1以后的才是所傳入的參數(shù)。用sys.argv[1:]可以獲取到所有的參數(shù),并且輸出到一個列表里面。

三、輸入為 --numa=1  --numb=2 形式和  --numa 1  --numb  2 形式

 如果 python test.py --numa=1 --numb=2

則sys.argv[1:] 為 [test.py, --numa=1, --numb=2]

 如果 python test.py --numa 1 --numb 2

則sys.argv[1:] 為 [test.py, --numa, 1, --numb, 2]

#輸入
$ python test.py --numa=1 --numb=2
 
import sys
def main(argv): 
    print(argv[0])                  --numa=1    
    print(argv[1])                  --numb=2
    print(argv[1:])                 ['--numb=2']
    print(argv[1][1:])              -numb=2
  
    print('sys.argv[0]:',sys.argv[0])        #test1.py
    print('sys.argv[1]:',sys.argv[1])        #--numa=1
    print('sys.argv[1:]:',sys.argv[1:])     #['--numa=1', '--numb=2']
  
    print('sys.argv:',sys.argv)                 #['test1.py', '--numa=1', '--numb=2']
    print('type(sys.argv):',type(sys.argv))     #<class 'list'>
    print('len(sys.argv):',len(sys.argv))       #3 
 
    return 0  
  
if __name__ == '__main__':  
    sys.exit(main(sys.argv[1:]))  #sys.exit(0)正常退出, sys.exit(1)非正常退出
 
==============================================================================
 
#輸入
$ python test.py --numa 1 --numb 2
 
import sys
def main(argv): 
    print(argv[0])                  --numa   
    print(argv[1])                  1
    print(argv[1:])                 ['1', '--numb', '2']
    print(argv[1][1:])              
  
    print('sys.argv[0]:',sys.argv[0])        #test1.py
    print('sys.argv[1]:',sys.argv[1])        #--numa
    print('sys.argv[1:]:',sys.argv[1:])     #['--numa', '1', '--numb', '2']
  
    print('sys.argv:',sys.argv)             #['test1.py', '--numa', '1', '--numb', '2']
    print('type(sys.argv):',type(sys.argv))     #<class 'list'>
    print('len(sys.argv):',len(sys.argv))       #5
 
    return 0  
  
if __name__ == '__main__':  
    sys.exit(main(sys.argv[1:]))  #sys.exit(0)正常退出, sys.exit(1)非正常退出

到此這篇關(guān)于一文搞懂關(guān)于 sys.argv 的詳解的文章就介紹到這了,更多相關(guān)sys.argv 是什么內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python?count()函數(shù)用法詳解

    Python?count()函數(shù)用法詳解

    這篇文章主要給大家介紹了關(guān)于Python?count()函數(shù)用法的相關(guān)資料,Python?count()方法用于統(tǒng)計字符串里某個字符出現(xiàn)的次數(shù),可選參數(shù)為在字符串搜索的開始與結(jié)束位置,需要的朋友可以參考下
    2024-02-02
  • Python二叉樹初識(新手也秒懂!)

    Python二叉樹初識(新手也秒懂!)

    二叉樹是一種簡單的樹形結(jié)構(gòu),其每個節(jié)點的分支節(jié)點數(shù)有0,1或2個,下面這篇文章主要給大家介紹了關(guān)于Python二叉樹的相關(guān)資料,本文介紹的非常通俗易懂,新手也秒懂,需要的朋友可以參考下
    2022-05-05
  • Pandas reindex重置索引的使用

    Pandas reindex重置索引的使用

    本文主要介紹了Pandas reindex重置索引的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • python shutil文件操作工具使用實例分析

    python shutil文件操作工具使用實例分析

    這篇文章主要介紹了python shutil文件操作工具使用實例分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • 淺析Python中g(shù)lobal和nonlocal關(guān)鍵字的妙用

    淺析Python中g(shù)lobal和nonlocal關(guān)鍵字的妙用

    這篇文章主要來和大家一起深入探討Python中關(guān)鍵詞global和nonlocal的用法,包括詳細(xì)的示例代碼和實際應(yīng)用場景,感興趣的可以了解下
    2024-04-04
  • 詳解Python當(dāng)中的字符串和編碼

    詳解Python當(dāng)中的字符串和編碼

    這篇文章主要介紹了詳解Python當(dāng)中的字符串和編碼,代碼基于Python2.x版本,文中所述皆是Python學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-04-04
  • np.meshgrid中的indexing參數(shù)問題解決

    np.meshgrid中的indexing參數(shù)問題解決

    本文主要介紹了np.meshgrid中的indexing參數(shù)問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python 隱藏輸入密碼時屏幕回顯的實例

    Python 隱藏輸入密碼時屏幕回顯的實例

    今天小編就為大家分享一篇Python 隱藏輸入密碼時屏幕回顯的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python中的常用函數(shù)使用及說明

    Python中的常用函數(shù)使用及說明

    這篇文章主要介紹了Python中的常用函數(shù)使用及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python復(fù)制列表時[:]和[::]之間有什么區(qū)別

    python復(fù)制列表時[:]和[::]之間有什么區(qū)別

    這篇文章主要給大家介紹了關(guān)于python復(fù)制列表時[:]和[::]之間有什么區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10

最新評論

大名县| 延吉市| 新晃| 高邮市| 溆浦县| 商洛市| 黄骅市| 黄骅市| 林口县| 沈阳市| 邢台县| 广水市| 巴彦淖尔市| 卢龙县| 修文县| 铁岭市| 兴宁市| 福清市| 禄丰县| 洪泽县| 泸州市| 阿拉尔市| 罗甸县| 久治县| 东明县| 米泉市| 辽中县| 油尖旺区| 阿拉善左旗| 乐昌市| 沅江市| 东阿县| 毕节市| 清远市| 文水县| 西藏| 福建省| 大厂| 文山县| 大名县| 溧阳市|