python中命令行參數


python中的命令行參數

python中有一個模塊sys,sys.argv這個屬性提供了對命令行參數的訪問。命令行參數是調用某個程序時除程序名外的其他參數。

sys.argv是命令行參數的列表

len(sys.argv)是命令行參數的個數

下面我們用一個簡單的例子來說明一下。

復制代碼
#!/usr/bin/python
#coding:utf-8
import sys   ##加載sys這個模塊。
for i in range(len(sys.argv)):
    print "第%d個參數是:%s" % (i,sys.argv[i])
print
復制代碼

 

運行上面的腳本:

python argv.py 1 2 3

結果如下:

第0個參數是:argv.py

第1個參數是:1

第2個參數是:2

第3個參數是:3

 

從上面的腳本運行結果我們能看得出來第一個參數是腳本名本身也就是第0個參數。其余的一次類推。

有了這個sys.argv參數我們就可以向腳本傳遞一些我們想要用的參數。

 

另一個比較常用的模塊os.path可以完成對路徑的操作。它提供的函數可以完成管理和操作文件路徑中的各個部分,獲取文件或子目錄信息,文件路徑查詢操作。

下面列出一些os模塊中常用的函數:

函數名:                                 作用:  

 os.mkfifo('path/filename')/os.mknod('path/filename',mode,device)  創建命名管道/創建文件系統節點

os.remove('path/filename')                       刪除文件

os.rename('path/filename1','path/filename2')/renames()        重命名文件

os.stat('path/filename')                        返回文件信息

os.symlink('path/filename','path/ln_filename')             創建符號鏈接

os.utime()                               更新時間戳

os.tmpfile()                               創建並打開('w+b')一個新的臨時文件

os.walk()                                生成一個目錄樹下的所有文件名

 

目錄/文件夾

 

os.chdir()/fchdir()           改變當前工作目錄/通過一個文件描述符改變當前工作目錄

chroot()                改變當前進程的根目錄

listdir()                列出指定目錄的文件

getcwd()/getcwdu()          返回當前工作目錄/功能相同,但返回一個Unicode對象

mkdir()/makedirs()           創建目錄/創建多層目錄

rmdir()/removedirs()          刪除目錄/刪除多層目錄

 

訪問/權限

access()        檢驗權限模式

chmod()        改變權限模式

chown()/lchown()   改變ower和group ID /功能相同,但不會跟蹤鏈接

umask()       設置默認權限模式

 

文件描述符操作

open()        底層的操作系統open(對於文件,使用標准的內建open() 函數)

read()/write()     根據文件描述符讀取/寫入數據

dup()/dup2()      復制文件描述符號/功能相同,但是是復制到一個文件描述符設備號。

makedev()       從major和minor設備號創建一個原始設備號

major() /minor()    從原始設備號獲得major/minor設備號

 

下面是os.path模塊中的路徑名訪問的一些函數

函數描述

os.path.basename()   去掉目錄路徑,返回文件名

os.path.dirname()     去掉文件名,返回目錄路徑

os.path.join()       將分離的各部分組合成一個路徑名

os.path.split()       返回(dirname(),basename())元組

os.path.splitdrive()     返回(dirvename,pathname)元組

os.path.splitext()      返回(filename,extension)元組

信息

getatime()     返回最近訪問時間

getctime()     返回文件創建時間

getmtime()     返回最近文件修改時間

getsize()      返回文件大小(以字節為單位)

查詢

exists()     指定路徑(文件或目錄)是否存在

isabs()     指定路徑是否為絕對路徑

isdir()     指定路徑是否存在且為一個目錄

isfile()     指定路徑是否存在且為一個文件

islink()     指定路徑是否存在且為一個符號鏈接

ismount()     指定路徑是否存在且為一個掛載點

samefile()     兩個路徑名是否指向同一個文件

 

本篇將介紹python中sys, getopt模塊處理命令行參數

如果想對python腳本傳參數,python中對應的argc, argv(c語言的命令行參數)是什么呢?
需要模塊:sys
參數個數:len(sys.argv)
腳本名:    sys.argv[0]
參數1:     sys.argv[1]
參數2:     sys.argv[2]


test.py

import sys
print "腳本名:", sys.argv[0]
for i in range(1, len(sys.argv)):
    print "參數", i, sys.argv[i]

 

>>>python test.py hello world

腳本名:test.py
參數 1 hello
參數 2 world

python中使用命令行選項:
例如我們需要一個convert.py腳本。它的作用是處理一個文件,並將處理后的結果輸出到另一個文件中。
要求該腳本滿足以下條件:
1.通過-i -o選項來區別參數是輸入文件還是輸出文件.
>>> python convert.py -i inputfile -o outputfile
2.當不知道convert.py需要哪些參數時,用-h打印出幫助信息
>>> python convert.py -h

getopt函數原形:
getopt.getopt(args, options[, long_options])

convert.py

復制代碼
import sys, getopt

opts, args = getopt.getopt(sys.argv[1:], "hi:o:")
input_file=""
output_file=""
for op, value in opts:
    if op == "-i":
        input_file = value
    elif op == "-o":
        output_file = value
    elif op == "-h":
        usage()
        sys.exit()
復制代碼

 

代碼解釋:
a) sys.argv[1:]為要處理的參數列表,sys.argv[0]為腳本名,所以用sys.argv[1:]過濾掉腳本名。
b) "hi:o:": 當一個選項只是表示開關狀態時,即后面不帶附加參數時,在分析串中寫入選項字符。當選項后面是帶一個附加參數時,在分析串中寫入選項字符同時后面加一個":"號。所以"hi:o:"就表示"h"是一個開關選項;"i:"和"o:"則表示后面應該帶一個參數。
c) 調用getopt函數。函數返回兩個列表:opts和args。opts為分析出的格式信息。args為不屬於格式信息的剩余的命令行參數。opts是一個兩元組的列表。每個元素為:(選項串,附加參數)。如果沒有附加參數則為空串''。

getopt函數的第三個參數[, long_options]為可選的長選項參數,上面例子中的都為短選項(如-i -o)
長選項格式舉例:
--version
--file=error.txt
讓一個腳本同時支持短選項和長選項
getopt.getopt(sys.argv[1:], "hi:o:", ["version", "file="])


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM